【LeetCode】【HOT】347. 前 K 个高频元素
![在这里插入图片描述](https://img-blog.csdnimg.cn/71eeb1b69bb84f1592ba2db32ddd1b44.png)
package hot;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.PriorityQueue;
import java.util.Queue;
public class Solution347 {
public static void main(String[] args) {
int[] nums = {1,1,1,2,2,3};
Solution347 solution = new Solution347();
System.out.println(Arrays.toString(solution.method(nums, 2)));
}
private int[] method(int[] nums, int k){
int[] res = new int[k];
Map<Integer, Integer> map = new HashMap<>();
Queue<Map.Entry<Integer, Integer>> heap = new PriorityQueue<>(new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
return o2.getValue() - o1.getValue();
}
});
for(int n : nums){
if(map.containsKey(n)){
map.put(n, map.get(n) + 1);
}else{
map.put(n, 1);
}
}
for(Map.Entry<Integer, Integer> entry : map.entrySet()){
heap.offer(entry);
}
for(int i = 0; i < k; i++){
res[i] = heap.poll().getKey();
}
return res;
}
}