一、题目
二、思路
1、用unordered_map容器统计个数
2、将统计好的个数放入到优先队列,按个数排序
3、从优先队列取出k个数到输出数组res中
三、代码
struct cmp{
bool operator()(pair<int,int>&a,pair<int,int>&b){
return a.first<b.first;
}
};
class Solution {
public:
vector<int> topKFrequent(vector<int>& nums, int k) {
vector<int>res;
int size=nums.size();
unordered_map<int,int>dic;
for(int i=0;i<size;++i){
dic[nums[i]]++;
}
priority_queue<pair<int,int>,vector<pair<int,int>>,cmp>Que;
for(auto it=dic.begin();it!=dic.end();++it){
Que.push(make_pair(it->second,it->first));
}
while(k--){
res.emplace_back(Que.top().second);
Que.pop();
}
return res;
}
};