leetcode347.前K个高频元素

先使用map,统计每个字符出现的频率,然后使用优先队列根据字符出现频率存储字符,然后弹出堆中元素,弹出K次完成操作!

如果看不懂本题CPP语法的,可以参考我的另外一篇博客------------->CPP优先队列priority_queue,定义比较器,重载operator()

cpp 复制代码
class less1{
    public:
    bool operator()(const pair<int,int>& p1,const pair<int,int>& p2){
        return p1.second<p2.second;
    }
};

class Solution {
public:
    vector<int> topKFrequent(vector<int>& nums, int k) {
        unordered_map<int,int> m;
        vector<int> ans;
        for(int i=0;i<nums.size();++i){
            m[nums[i]]++;
        }
        priority_queue<pair<int,int>,vector<pair<int,int>>,less1> pq;
        for(const auto& item:m){
            pq.push(item);
        }
        for(int i=0;i<k;++i){
            ans.push_back(pq.top().first);
            pq.pop();
        }
        return ans;
    }
};
相关推荐
雪花desu4 小时前
【Hot100-Java简单】:两数之和 (Two Sum) —— 从暴力枚举到哈希表的思维跃迁
java·数据结构·算法·leetcode·哈希表
雪花desu6 小时前
【Hot100-Java中等】:字母异位词分组
java·算法·leetcode·哈希表
徐子童4 天前
优选算法---哈希表
数据结构·算法·哈希表
weixin79893765432...5 天前
js 数据结构
链表·数组·哈希表·堆|栈·树|图·队列|双端队列·js 数据结构
罗湖老棍子6 天前
最小函数值(minval)(信息学奥赛一本通- P1370)
数据结构·c++·算法··优先队列·
月明长歌7 天前
Java数据结构:PriorityQueue堆与优先级队列:从概念到手写大根堆
java·数据结构·python·leetcode·
F_D_Z8 天前
哈希表解Two Sum问题
python·算法·leetcode·哈希表
伟大的车尔尼10 天前
双指针题目:两个数组的交集 II
排序·双指针·哈希表
伟大的车尔尼13 天前
双指针题目:两个数组的交集
排序·双指针·哈希表
EXtreme3513 天前
【数据结构】建堆操作:向上调整与向下调整的数学推导与性能对比
c语言·数据结构··时间复杂度·topk问题·算法分析