给定一个非空的整数数组,返回其中出现频率前 k 高的元素。
class Solution {
public List<Integer> topKFrequent(int[] nums, int k) {
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i=0;i<nums.length;i++){
int key = nums[i];
int value = map.getOrDefault(key,0)+1;
map.put(key,value);
}
PriorityQueue<Map.Entry<Integer,Integer>> queue =
new PriorityQueue<Map.Entry<Integer,Integer>>(
(o1,o2)->o2.getValue().compareTo(o1.getValue()) );
for(Map.Entry<Integer,Integer> entry : map.entrySet()){
queue.add(entry);
}
List<Integer> list = new LinkedList<Integer>();
for(int i=0;i<k;i++){
list.add(queue.poll().getKey());
}
return list;
}
}