https://leetcode-cn.com/problems/top-k-frequent-elements/
哈希表+排序
bool cmp(pair<int,int> a,pair<int,int> b)
{
return a.second>b.second;//降序排序,将第二个元素比较大的放在前面
}
class Solution {
public:
vector<int> topKFrequent(vector<int>& nums, int k) {
unordered_map<int,int> mp;//哈希表
vector<pair<int,int>> v;//向量存放键值对
vector<int> ret;//要返回的向量
for(auto &num:nums)
{
mp[num]++;//key值为num的项value加1
}
for(auto iter=mp.begin();iter!=mp.end();iter++)
{
v.push_back(*iter);//迭代,将哈希表中的每一项都放入向量中,向量中的项结构与哈希表项的结构相同
}
sort(v.begin(),v.end(),cmp);//利用向量的排序,将出现次数多的放在前面
auto iter = v.begin();
while(k--){//收集前k个,把他们返回
ret.push_back(iter->first);
iter++;
}
return ret;
}
};

本文解析了如何使用哈希表和排序技巧在LeetCode问题中找到出现频率最高的k个元素。通过遍历输入数组更新哈希表,再借助降序排序获取前k个频繁元素,实现了一种高效解决方案。
652

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



