鸽一天

搞搞MATLAB

然后,看看论文,最后,今天的LeetCode犯琢磨,先抄下来先。
题目:
https://leetcode-cn.com/problems/top-k-frequent-elements/

class Solution {
    
    
public:
    static bool cmp(pair<int, int>& m, pair<int, int>& n) {
    
    
        return m.second > n.second;
    }

    vector<int> topKFrequent(vector<int>& nums, int k) {
    
    
        unordered_map<int, int> occurrences;
        for (auto& v : nums) {
    
    
            occurrences[v]++;
        }

        // pair 的第一个元素代表数组的值,第二个元素代表了该值出现的次数
        priority_queue<pair<int, int>, vector<pair<int, int>>, decltype(&cmp)> q(cmp);
        for (auto& [num, count] : occurrences) {
    
    
            if (q.size() == k) {
    
    
                if (q.top().second < count) {
    
    
                    q.pop();
                    q.emplace(num, count);
                }
            } else {
    
    
                q.emplace(num, count);
            }
        }
        vector<int> ret;
        while (!q.empty()) {
    
    
            ret.emplace_back(q.top().first);
            q.pop();
        }
        return ret;
    }
};

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/top-k-frequent-elements/solution/qian-k-ge-gao-pin-yuan-su-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/weixin_47741017/article/details/108458026
今日推荐