中江建设局网站优化排名seo
题目如下
数据范围
利用map统计各个数的出现次数然后使用pair数据结构最后从频率大到小排序。
通过代码
class Solution {
public:static bool cmp(const pair<int,int> &a ,const pair<int,int> &b){return a.first >= b.first;}vector<int> topKFrequent(vector<int>& nums, int k) {int n = nums.size();if(n == k)return nums;vector<int> ans;unordered_map<int,int> map;unordered_map<int,int>::iterator it;vector<pair<int,int>> s;for(int i = 0;i < n;i++){map[nums[i]]++;}for(it = map.begin();it != map.end();it++){s.emplace_back(it->second,it->first);}sort(s.begin(),s.end(),cmp);for(int i = 0;i < k;i++)ans.push_back(s[i].second);return ans;}
};