赞
踩
题目: 347. 前 K 个高频元素
文档: 代码随想录——前 K 个高频元素
编程语言: C++
解题状态: 想不出来,感觉考察数据结构多于考察算法了
会使用优先级队列就可以很好的理解本题。
class Solution { public: // 小顶堆 class mycomparison { public: bool operator()(const pair<int, int>& lhs, const pair<int, int>& rhs) { return lhs.second > rhs.second; } }; vector<int> topKFrequent(vector<int>& nums, int k) { // 统计元素出现频率 unordered_map<int, int> map; for (int i = 0; i < nums.size(); i++) { map[nums[i]]++; } // 对频率排序 priority_queue<pair<int, int>, vector<pair<int, int>>, mycomparison> pri_que; for (unordered_map<int, int>::iterator it = map.begin(); it != map.end(); it++) { pri_que.push(*it); if (pri_que.size() > k) { pri_que.pop(); } } vector<int> result(k); for (int i = k - 1; i >= 0; i--) { result[i] = pri_que.top().first; pri_que.pop(); } return result; } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。