Open Ni-Guvara opened 1 year ago
class Solution {
public int[] topKFrequent(int[] nums, int k) {
HashMap<Integer, Integer> map = new HashMap<>();
for(int i : nums){
map.put(i, map.getOrDefault(i, 0) + 1);
}
// 最小堆保存频率最高的元素
PriorityQueue<Integer> pq = new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer a, Integer b) {
return map.get(a) - map.get(b);
}
});
for (Integer key : map.keySet()) {
if (pq.size() < k){
pq.add(key);
}else if(map.get(key) > map.get(pq.peek())){
pq.remove();
pq.add(key);
}
}
int[] ret = new int[k];
for (int i = 0; i < k; i++){
ret[i] = pq.poll();
}
return ret;
}
}