347. Top K Frequent Elements

JJ·2020년 12월 24일
0

Algorithms

목록 보기
29/114
class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        if (k == nums.length) {
            return nums;
        }
        
        Map<Integer, Integer> c = new HashMap<Integer, Integer>();
        
        for (int i = 0; i < nums.length; i++) {
            c.put(nums[i], c.getOrDefault(nums[i], 0) + 1);
        }
        
        Queue<Integer> q = new PriorityQueue<Integer>((n1, n2) -> c.get(n1) - c.get(n2));
        
        for (int n : c.keySet()) {
            q.add(n);
            if (q.size() > k) q.poll();
        }
        
        int[] top = new int[k];
        for (int i = k - 1; i >= 0; i--) {
            top[i] = q.poll();
        }
        
        return top;
        
    }
}

Runtime: 11 ms, faster than 41.06% of Java online submissions for Top K Frequent Elements.
Memory Usage: 41.6 MB, less than 71.20% of Java online submissions for Top K Frequent Elements.

이중포문아...그립다.

0개의 댓글