力扣 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;
    }
}
相关推荐
什巳9 小时前
JAVA练习309- 二叉树的层序遍历
java·数据结构·算法·leetcode
什巳11 小时前
JAVA练习306- 翻转二叉树
java·数据结构·算法·leetcode
smj2302_7968265211 小时前
解决leetcode第3989题网格中保持一致的最大列数
python·算法·leetcode
ychqsq12 小时前
88.归途
经验分享·职场和发展
巧克力男孩dd13 小时前
Python超典型练习题(第一次作业)
开发语言·python·算法
爱刷碗的苏泓舒13 小时前
平方根信息滤波:矩阵推导及 GNSS 参数估计应用
线性代数·算法·矩阵·gnss·参数估计·测量平差·平方根信息滤波
想做小南娘,发现自己是女生喵14 小时前
第 2 章 顺序表和 vector
java·数据结构·算法
艾醒14 小时前
2026年第29周(7.13-7.19)AI全复盘:技术突破、行业趣闻翻车、算力服务器商业动态
人工智能·算法
雪碧聊技术15 小时前
动态规划算法—01背包问题
算法·动态规划
bu_shuo15 小时前
c与cpp中的argc和argv
c语言·c++·算法