优先队列——heap

347. 前 K 个高频元素

priority_queue<Type, Container, Functional> // greater<>表示小根堆

vector<int> topKFrequent(vector<int>& nums, int k) {
        priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> minHeap;
        unordered_map<int,int> count;
        for(int i : nums){
            ++count[i];
        }
        for(auto& x:count){
            auto pair = make_pair(x.second, x.first);
            if(minHeap.size()==k){
                if(pair < minHeap.top()) continue;
                minHeap.pop();
            }
            minHeap.push(move(pair));
        }
        vector<int> ans(k,0);
        while(!minHeap.empty()){
            ans[--k]=minHeap.top().second;
            minHeap.pop();
        }
        return ans;
    }

 

上一篇:最小堆建立哈夫曼树及各种操作


下一篇:c-什么是函数__tcf_0? (使用gprof和g时可见)