Time Cost
11min1s
Implementation
Use min heap to save k-th frequent elements
Code
- Solution
class Solution { public: vector<int> topKFrequent(vector<int>& nums, int k) { unordered_map<int, int> counts; for (int num: nums) { if (counts.count(num)) { counts[num]++; }else{ counts[num]=0; } } priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> minheap; for (auto const& [key, value]: counts) { if (minheap.size() < k) { minheap.emplace(value, key); }else{ if (value > minheap.top().first) { minheap.pop(); minheap.emplace(value, key); } } } vector<int> result; while (!minheap.empty()) { result.push_back(minheap.top().second); minheap.pop(); } return result; } };