Categories
未分类

LeetCode 347. Top K Frequent Elements

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;
    }
};

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.