2021-09-29-前k个高频元素

思路

统计每个元素出现的次数
遍历map,用最小堆保存频率最大的k个元素

代码
class Solution {
    // HashMap map;
    // static Comparator cmp = new Comparator<>(){
    //     public int compare(Integer o1, Integer o2){
    //         return map.get(o1)-map.get(o1);
    //     }
    // };
    public List topKFrequent(int[] nums, int k) {
        // 统计每个元素出现的次数
        HashMap map = new HashMap();
        for(int num : nums){
            map.put(num, map.getOrDefault(num, 0)+1);
        }
        // 遍历map,用最小堆保存频率最大的k个元素
        Queue queue = new PriorityQueue<>(new Comparator<>(){
            @Override
            public int compare(Integer o1, Integer o2){
                return map.get(o1)-map.get(o2);
            }
        });
        for (Integer key: map.keySet()){
            if (queue.size() res = new ArrayList<>();
        while (queue.size()>0){
            res.add(queue.poll());
        }
        return res;
    }
}

你可能感兴趣的:(2021-09-29-前k个高频元素)