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;
    }
};
相关推荐
Lzc77412 小时前
堆+堆排序+topK问题
数据结构·
WenGyyyL2 天前
面试经典150题——多数元素
算法·哈希表·摩尔算法
源代码•宸3 天前
Leetcode—740. 删除并获得点数【中等】(unordered_map+set+sort)
c++·经验分享·算法·leetcode·动态规划·哈希表
CH13hh10 天前
常回家看看之house of kiwi
pwn·ctf··house
sweetheart7-713 天前
LeetCode560. 和为 K 的子数组(2024秋季每日一题 12)
数据结构·算法·leetcode·前缀和·哈希表
橘子真甜~15 天前
6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)
c语言·数据结构·c++·算法·面试·
朱皮皮呀19 天前
数据结构-堆
数据结构·算法·二叉树··
zhoupenghui16820 天前
数据结构-树
数据结构·二叉树···完全二叉树
硕风和炜1 个月前
【LeetCode:3137. K 周期字符串需要的最少操作次数 | 哈希表 + 子串计数】
java·算法·leetcode·散列表·哈希表·计数
Tisfy1 个月前
LeetCode 3137.K 周期字符串需要的最少操作次数:哈希表计数
leetcode·字符串·散列表·题解·哈希表·哈希