Leetcode刷題 - Top K 系列
阿新 • • 發佈:2020-09-12
347.Top K Frequent Elements
class Solution { public: vector<int> topKFrequent(vector<int>& nums, int k) { // hash map 儲存frequency unordered_map<int, int> map; for (int num : nums) map[num]++; vector<int> ans; // use priority queue to build max heap priority_queue<pair<int,int>> pq; // 迭代map加入堆中,尋找最大頻率對應的數 for(auto iter = map.begin(); iter != map.end(); iter ++){ pq.push(make_pair(iter->second, iter->first)); if (pq.size() > map.size() - k){ ans.push_back(pq.top().second); // 加入ans中,彈出堆頂元素 pq.pop(); } } return ans; } };
總結
1. 識別最大K個元素模式:
- 如果你需要求最大/最小/最頻繁的前K個元素
- 如果你需要通過排序去找一個特定的數
參考資料
- https://leetcode.com/problems/top-k-frequent-elements/