top-k-frequent-elements
https://leetcode.com/problems/top-k-frequent-elements/
class minHeap { // min Heap private: vector<pair<int, int> > array; int alen; void adjust_all() { for (int k=alen-1; k>=0; --k) { adjust(k); } } void swap(int i, int j) { int tmp = array[i].first; array[i].first = array[j].first; array[j].first = tmp; tmp = array[i].second; array[i].second = array[j].second; array[j].second = tmp; } void adjust(int k) { if (k*2+1 >= alen) { return; } int j = k * 2 + 1; if (k*2+2 < alen && array[k*2+1].second > array[k*2+2].second) { j = k * 2 + 2; } if (array[k].second > array[j].second) { swap(k, j); adjust(j); } } public: minHeap(int n) { alen = n; } void add(int num, int freq) { if (array.size() < alen) { array.push_back(make_pair(num, freq)); if (array.size() == alen) { adjust_all(); } } else { if (freq > array[0].second) { array[0].first = num; array[0].second = freq; adjust(0); } } } vector<int> getArray() { vector<int> ret; for (int k=alen-1; k>=0; --k) { ret.push_back(array[k].first); } return ret; } }; class Solution { unordered_map<int, int> umap; public: vector<int> topKFrequent(vector<int>& nums, int k) { int vlen = nums.size(); for (int i=0; i<vlen; ++i) { if (umap.find(nums[i]) != umap.end()) { umap[nums[i]] = umap[nums[i]] + 1; } else { umap[nums[i]] = 1; } } minHeap mh(k); for (unordered_map<int, int>::iterator itr = umap.begin(); itr != umap.end(); ++itr) { mh.add(itr->first, itr->second); } return mh.getArray(); } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!