public static int[] topKFrequent(int[] nums,int k){
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int num:
nums) {
map.put(num,map.getOrDefault(num,0)+1);
}
PriorityQueue<int[]> q = new PriorityQueue<>(new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[1] - o2[1];
}
});
for (Map.Entry<Integer,Integer> entry:
map.entrySet()
) {
int num=entry.getKey(),
count=entry.getValue();
if(q.size()==k){
if(q.peek()[1]<count){
q.poll();
q.offer(new int[]{num,count});
}
}else{
q.offer(new int[]{num,count});
}
}
int[] ret=new int[k];
for (int i = 0; i <k ; i++) {
ret[i]=q.poll()[0];
}
return ret;
}