LC347.前 K 个高频元素

发布时间:2024年01月15日

?代码随想录

class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        Map<Integer,Integer> map = new HashMap<>();
        for(int num : nums){
            map.put(
                num,map.getOrDefault(num,0)+1
            );
        }
        PriorityQueue<int[]> pq = new PriorityQueue<>((
            pair1,pair2
        ) -> pair1[1] - pair2[1]);

        for(Map.Entry<Integer,Integer> entry: map.entrySet()
                ){
            if(pq.size() < k){
                pq.add(new int[] {
                    entry.getKey(),
                    entry.getValue()
                });
            }else{

                if(entry.getValue() > pq.peek()[1]){
                    pq.poll();
                    pq.add(new int[]{
                        entry.getKey(),
                        entry.getValue()
                    });
                }
            }
        }
        int [] ans = new int[k];

        for(int i = k -1 ; i >= 0 ; i--){
            ans[i] = pq.poll()[0];
        }
        return ans;
    }
}

文章来源:https://blog.csdn.net/xuan__xia/article/details/135605015
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。