Leetcode-347
要求按出现频率进行排序:首先我们应该先统计好每个数字出现的次数,放进一个Hash表中。然后按照频率高低进行排序放进容器,最后输出容器中的前K个数。
因为优先队列的大根堆特性,把Hash表存进里面便可以完成自动排序,同理我们也可以把它放进vector中然后进行sort是一样的。
第一种方法:

vector<int> res;unordered_map<int,int> mp;priority_queue<pair<int,int>> pq;for(auto e:nums){    mp[e]++;}for(auto it:mp){    pq.push(make_pair(it.second,it.first));}while(k--){    res.push_back(pq.top().second);    pq.pop();}return res;

第二种方法:

vector<int> res;unordered_map<int,int> mp;vector<pair<int,int>> temp;for(auto e:nums){    mp[e]++;}for(auto it:mp){    temp.push_back(make_pair(it.second,it.first));}sort(temp.begin(),temp.end(),comp);for(int i = 0;i<k;++i){    res.push_back(temp[i].second);}return res;bool comp(pair<int,int> &a,pair<int,int> &b){    return a.first>b.first;}