1、题目
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。
链接:https://leetcode-cn.com/problems/top-k-frequent-elements/
2、代码展示
1)暴力求解法
利用数据结构unordered_map计算数字的个数,然后将其排序,最后返回前K个最大的数
class Solution {
public:
vector<int> topKFrequent(vector<int>& nums, int k) {
// 利用unordered_map计算出数字的个数
unordered_map<int, int> m;
for(auto e:nums)
{
m[e]++;
}
// 对m中的数字排序,保证降序排序
multimap<int, int , greater<int>> mm;
for(auto e:m)
{
mm.insert(make_pair(e.second, e.first));
}
// 将mm中已排序的数字返回最大的k个
vector<int> ret;
for(auto e: mm)
{
if(k == 0)
break;
ret.push_back(e.second);
k--;
}
return ret;
}
};