题目描述:给你一个整数数组 nums
和一个整数 k
,请你返回其中出现频率前 k
高的元素。你可以按 任意顺序 返回答案。
编码实现:
public static int[] topKFrequent(int[] nums, int k) {
if (null == nums || nums.length == 0){
return null;
}
Map<Integer, Integer> map = new HashMap<>();
for (int num : nums){
map.put(num, map.getOrDefault(num, 0) + 1);
}
PriorityQueue<int[]> priorityQueue = new PriorityQueue<>((x, y) -> y[1] - x[1]);
for (int key : map.keySet()){
priorityQueue.add(new int[]{key, map.get(key)});
}
int[] result = new int[k];
for (int i = 0; i < k; i++){
result[i] = priorityQueue.poll()[0];
}
return result;
}