https://leetcode.com/problems/top-k-frequent-elements/description/
hash map + heap
Time complicity: O(N + logk)
struct KvPair { int key = 0; int val = 0; }; class Solution { public: vector<int> topKFrequent(vector<int>& nums, int k) { unordered_map<int, int> counts; for (int num : nums) { counts[num]++; } auto comp = [](const KvPair& lhs, const KvPair& rhs){ return lhs.val > rhs.val; }; priority_queue<KvPair, vector<KvPair>, decltype(comp)> pri_q(comp); for (auto& it : counts) { pri_q.push({it.first, it.second}); if (pri_q.size() > k) pri_q.pop(); } vector<int> results; while (!pri_q.empty()) { results.push_back(pri_q.top().key); pri_q.pop(); } return results; } };