class Solution {
public int[] topKFrequent(int[] nums, int k) {
Map<Integer,Integer> occurrences=new HashMap<Integer,Integer>();
for(int num:nums){
occurrences.put(num,occurrences.getOrDefault(num, 0)+1);
}
PriorityQueue<int[]> queue=new PriorityQueue<int[]>(new Comparator<int[]>(){
public int compare(int[] m, int[] n){
return m[1]-n[1];
}
});
for(Map.Entry<Integer,Integer> entry: occurrences.entrySet()){
int num=entry.getKey();
int count=entry.getValue();
if(queue.size()==k){
if(count > queue.peek()[1]){
queue.poll();
queue.add(new int[]{num,count});
}
}
else{
queue.add(new int[]{num,count});
}
}
int[] ret=new int[k];
for(int i=0;i<k;i++){
ret[i]=queue.poll()[0];
}
return ret;
}
}
leetcode 347 . Top K Frequent Elements
最新推荐文章于 2023-12-22 13:49:54 发布