Leetcode
2020.05.05 12:01

697. Degree of an Array

조회 수 473 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

Given a non-empty array of non-negative integers nums, the degree of this array is defined as the maximum frequency of any one of its elements.

Your task is to find the smallest possible length of a (contiguous) subarray of nums, that has the same degree as nums.

Example 1:

Input: [1, 2, 2, 3, 1]
Output: 2
Explanation: 
The input array has a degree of 2 because both elements 1 and 2 appear twice.
Of the subarrays that have the same degree:
[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, 2]
The shortest length is 2. So return 2.

Example 2:

Input: [1,2,2,3,1,4,2]
Output: 6

Note:

  • nums.length will be between 1 and 50,000.
  • nums[i] will be an integer between 0 and 49,999.

  • class Solution {
        public int findShortestSubArray(int[] nums) {
            Map<Integer, Integer> hmap = new HashMap<>();
            
            int degree = -1;
            //int number = nums[0];
            
            for(int num : nums){
                int count = hmap.getOrDefault(num, 0) + 1;
                if(degree < count){
                    degree = count;
                    //number = num;
                }
                hmap.put(num, count);
            }
            
            int minVal = Integer.MAX_VALUE;
            
            for(Map.Entry<Integer, Integer> item : hmap.entrySet()){
                if(item.getValue() == degree){
                    int number = item.getKey();
                    int left = -1;
                    int right = -1;
                    int len = nums.length;
                    for(int i=0; i<len; i++){
                        if(nums[i] == number && left == -1){
                            left = i;
                        }
    
                        if(nums[len-1-i] == number && right == -1){
                            right = len - 1 - i;
                        }
                    }
    
                    len = right < left ? 0 : right - left + 1;
                    if(minVal > len){
                        minVal = len;
                    }
                }
            }
            
            return minVal;
        }
    }


    [문제] https://leetcode.com/problems/degree-of-an-array/



    ?

    1. 720. Longest Word in Dictionary

    2. 225. Implement Stack using Queues

    3. 56. Merge Intervals

    4. 844. Backspace String Compare

    5. 222. Count Complete Tree Nodes

    6. 697. Degree of an Array

    7. 605. Can Place Flowers

    8. 724. Find Pivot Index

    9. 448. Find All Numbers Disappeared in an Array

    10. 628. Maximum Product of Three Numbers

    11. 532. K-diff Pairs in an Array

    12. 897. Increasing Order Search Tree

    13. 872. Leaf-Similar Trees

    14. 876. Middle of the Linked List

    15. 203. Remove Linked List Elements

    16. 997. Find the Town Judge

    17. 270. Closest Binary Search Tree Value

    18. 687. Longest Univalue Path

    19. 783. Minimum Distance Between BST Nodes

    20. 235. Lowest Common Ancestor of a Binary Search Tree

    Board Pagination Prev 1 2 3 4 Next
    / 4