欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 力扣 347. 前 K 个高频元素

力扣 347. 前 K 个高频元素

2025/2/6 22:16:43 来源:https://blog.csdn.net/weixin_42383726/article/details/145420880  浏览:    关键词:力扣 347. 前 K 个高频元素

🔗 https://leetcode.cn/problems/top-k-frequent-elements

题目

  • 给一个数组,返回其中出现频率前 K 高的数字

思路

  • 统计数组中数字出现的频率
  • 优先队列,建立大小为 k 的小根堆,根据数字出现的频率排序
  • 更新并维护该优先队列,便是前 K 个高频元素

代码

class Solution {
public:vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int, int> m;for (auto num : nums) {m[num]++;}auto minHeapCompare = [](pair<int, int> left, pair<int, int> right) {return left.second > right.second; // 自定义比较器,建立最小堆
};
std::priority_queue<pair<int, int>, std::vector<pair<int, int>>, decltype(minHeapCompare)>heap(minHeapCompare);for (auto item : m) {if (heap.size() < k) {pair<int, int> p = make_pair(item.first, item. second);heap.push(p);continue;}if (item.second > heap.top().second) {heap.pop();pair<int, int> p = make_pair(item.first, item. second);heap.push(p);}}vector<int> ans;while (heap.empty() == false) {ans.push_back(heap.top().first);heap.pop();}return ans;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com