leetcode 347. 前 K 个高频元素
题目如下
数据范围
利用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;
}
};