力扣 LeetCode 347. 前K个高频元素(Day5:栈与队列)

解题思路:

小根堆统计前K个高频元素

注意:

PriorityQueue中需要自定义排序规则

java 复制代码
class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        PriorityQueue<int[]> pq = new PriorityQueue<>((x,y)->x[1]-y[1]);
        Map<Integer,Integer> map=new HashMap<>();
        for(int num:nums){
            map.put(num,map.getOrDefault(num,0)+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[] res=new int[k];
        for(int i=0;i<k;i++){
            res[i]=pq.poll()[0];
        }
        return res;
    }
}
相关推荐
xisai887 分钟前
2025年开考科目有哪些?
java·开发语言·javascript·算法·kotlin
yangmc041 小时前
判断子序列
开发语言·数据结构·c++·算法·矩阵·图论
新兴AI民工1 小时前
opencv调用扩展库SIFT算法
opencv·算法·sift·opencv420·xfeature2d库
考试宝1 小时前
新能源汽车关键技术技能大赛理论知识竞赛题库
大数据·网络·职场和发展·汽车·学习方法·业界资讯
Water_Sunzhipeng1 小时前
The 3rd Universal CupStage 15: Chengdu, November 2-3, 2024(2024ICPC 成都)
算法
席万里1 小时前
C++图案例大全
数据结构·c++·算法
李小白661 小时前
二叉树的练习题(中)
java·数据结构·算法
圣保罗的大教堂2 小时前
leetcode 3239. 最少翻转次数使二进制矩阵回文 I
leetcode
LabVIEW开发2 小时前
LabVIEW开发相机与显微镜自动对焦功能
算法·计算机视觉·labview知识