力扣 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;
    }
}
相关推荐
努力中的编程者6 分钟前
STL-vector的模拟实现
开发语言·c++·算法·stl·vector
weixin_4000056031 分钟前
RL-frenet-trajectory-planning-in-CARLA
人工智能·深度学习·算法·机器学习·自动驾驶
Keven_1134 分钟前
AcWing算法提高课思路速查:动态规划
算法·动态规划
剑挑星河月44 分钟前
94.二叉树的中序遍历
java·算法·leetcode
拳里剑气1 小时前
C++算法:队列与BFS
c++·算法·bfs·宽度优先·队列
Ivanqhz1 小时前
注意力机制
线性代数·算法·矩阵·哈希算法·dnn
z小猫不吃鱼1 小时前
02 Optimal Brain Damage 详解:二阶信息剪枝的起点
算法·机器学习·剪枝
Sw1zzle1 小时前
算法入门(三):二分查找 - 基础模板 & 边界控制(Leetcode 704/35/278/34/69/367)
算法·leetcode
Keven_111 小时前
算法札记:如何判断一个DP能否单调队列优化
算法
m0_626535201 小时前
近似attention
人工智能·算法·机器学习