class Solution {
public:
class myCmp{
public:
bool operator()(const pair<int,int>&l,const pair<int,int>& r ){
return l.second>r.second;
}
};
vector<int> topKFrequent(vector<int>& nums, int k) {
unordered_map<int,int> mpt;
for(int i=0;i<nums.size();i++){
mpt[nums[i]]++;
}
priority_queue<pair<int,int>,vector<pair<int,int>>,myCmp> q;
for(auto it:mpt){
q.push(it);
if(q.size()>k){
q.pop();
}
}
vector<int> res(k);
for(int i=k-1;i>=0;i--){
res[i]=q.top().first;
q.pop();
}
return res;
}
};
优先队列的应用