本文最后更新于625 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com
题目链接/文章讲解/视频讲解:https://programmercarl.com/0347.%E5%89%8DK%E4%B8%AA%E9%AB%98%E9%A2%91%E5%85%83%E7%B4%A0.html
1.我感觉代码难度不大,细节的地方挺多的,看了视频的讲解我现在对这些个基本的数据结构有更深刻的理解呢,感觉到时候自己再二刷的时候肯定会有更大的进步,这个题我还是有public的问题,方法未公有化,导致无法访问我的compare的自己定义的比较策略,然后也给我复习了一下迭代器,好久没用了,然后最后返回数组的时候少遍历最后的一个元素这些是我接下来练习需要着重注意的细节呢。
CPP
class Solution {
public:
class MyCompare{
public:
bool operator()(const pair<int,int>&lhs,const pair<int,int>&rhs){
return lhs.second >rhs.second;
}
};
public:
vector<int> topKFrequent(vector<int>& nums, int k) {
unordered_map<int,int> map;
for(int i = 0;i<nums.size();i ++){
map[nums[i]]++;
}
priority_queue<pair<int,int>,vector<pair<int,int>>,MyCompare>pri_qu;
for(unordered_map<int,int>::iterator it = map.begin();it != map.end();it++ ){
pri_qu.push(*it);
if(pri_qu.size() > k){
pri_qu.pop();
}
}
vector<int>res(k);
for(int i = k-1;i>=0;i--){
res[i] = pri_qu.top().first;
pri_qu.pop();
}
return res;
}
};