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.
이중포문아...그립다.