class Solution {
public:
vector<int> topKFrequent(vector<int>& nums, int k)
{
vector<int> ans;
unordered_map<int,int> table;
vector<pair<int,int>> temp;
for(int i=0;i<nums.size();i++)
{
if(table.find(nums[i])!=table.end()) //has found
table[nums[i]]++;
else
table[nums[i]]=1;
} //establish hash table
for(unordered_map<int,int>:: iterator it=table.begin();it!=table.end();it++)
{
temp.push_back(make_pair(it->first,it->second));
}
sort(temp.begin(),temp.end(),flag);
for(int i=0;i<k;i++)
ans.push_back(temp[i].first);
return ans;
}
static bool flag(const pair<int,int> a,const pair<int,int> b)
{
if(a.second!=b.second)
return a.second>b.second;
if(a.first!=b.first)
return a.first<b.first;
}
};347. Top K Frequent Elements
最新推荐文章于 2024-06-11 11:37:12 发布
本文介绍了一种使用C++实现的寻找数组中出现频率最高的k个元素的方法。通过建立哈希表统计每个元素出现的次数,并根据出现次数对元素进行排序,最终选出前k个最频繁出现的元素。
827

被折叠的 条评论
为什么被折叠?



