leetcode347.前k个高频元素
直接统计词频,根据词频存入到最大堆中,堆中弹出来k次就是前k高的
class Solution {public int[] topKFrequent(int[] nums, int k) {//1.将nums中的数字装入一个数频词典中Map<Integer, Integer> numFreq = new HashMap<>();for (int num : nums) {numFreq.put(num, numFreq.getOrDefault(num, 0) + 1);}//2.将数频词典塞入到大根堆中,根据数频降序排序PriorityQueue<Integer> priorityQueue = new PriorityQueue<>((a, b) -> numFreq.get(b) - numFreq.get(a));priorityQueue.addAll(numFreq.keySet());//3.将这个大根堆弹出k次就是求解的前k高频数字int[] result = new int[k];for (int i = 0; i < k; i++) {result[i] = priorityQueue.poll();}//4.返回结果return result;}
}