LeetCode_347前k个高频元素

给定一个非空的整数数组,返回其中出现频率前 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;
    }
}
发布了250 篇原创文章 · 获赞 0 · 访问量 1227

猜你喜欢

转载自blog.csdn.net/qq_36198826/article/details/104032718