Leetcode 347. 前 K 个高频元素 堆 / 优先队列

原题链接:Leetcode 347. 前 K 个高频元素

进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。

1. 堆 / 优先队列

cpp 复制代码
class Solution {
public:
    struct cmp{
        bool operator() (const pair<int,int>& a, const pair<int,int>& b){
            return a.second > b.second; // 小顶堆
        }
    };
    vector<int> topKFrequent(vector<int>& nums, int k) {
        unordered_map<int,int> count;
        for(auto x: nums) count[x]++;
         // pair 的第一个元素代表数组的值,第二个元素代表了该值出现的次数
        priority_queue<pair<int,int>,vector<pair<int,int>>,cmp> q;
        for(auto x: count){
            int num = x.first;
            int cnt = x.second;
            if(q.size()==k){
                if(q.top().second < cnt){
                    q.pop();
                    q.push({num,cnt});
                }
            }
            else{
                q.push({num,cnt});
            }
        }
        vector<int> res;
        while(!q.empty()){
            int num = q.top().first;
            res.push_back(num);
            q.pop();
        }
        return res;
    }
};
相关推荐
努力变大白1 天前
物流路径优化系统的算法设计与实现:从理论到实践的完整探索
算法
黛色正浓1 天前
leetCode-热题100-二叉树合集(JavaScript)
javascript·算法·leetcode
zl_vslam1 天前
SLAM中的非线性优-3D图优化之地平面约束(十四)
算法·计算机视觉·平面·3d
炽烈小老头1 天前
【每天学习一点算法 2026/01/05】打乱数组
学习·算法·leetcode
CoovallyAIHub1 天前
当特斯拉FSD在高速狂奔时,SCCA-YOLO如何看清偏远乡村道路的复杂场景?
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
工业质检只能依赖缺陷样本?PatchCore给出“冷启动”答案
深度学习·算法·计算机视觉
.小墨迹1 天前
cmake的add_definitions和target_compile_definitions使用
c++·学习·算法·ubuntu·机器学习
高洁011 天前
10分钟了解向量数据库(2)
深度学习·算法·机器学习·transformer·知识图谱
颜酱1 天前
用填充表格法-吃透01背包及其变形
前端·后端·算法
C雨后彩虹1 天前
简易内存池
java·数据结构·算法·华为·面试