leetcode 前k个高频元素

leetcode 前k个高频元素_第1张图片

1.优先队列

构建最小堆,记录k个出现次数最高的元素

代码如下:

class Solution {
    priority_queue,vector>,greater>> minHeap;
public:
    vector topKFrequent(vector& nums, int k) {
        //维护一个最小堆,堆的大小为k,存放出现频率前K高的元素
     map m;
     for(int i=0;i::iterator iter=m.begin();
    while(iter!=m.end())
    {
          minHeap.push({iter->second,iter->first});//以次数--元素的形式放入队列中,队列中按出现次数升序排列
          if(minHeap.size()>k) //如果大小大于k,则删除队首出现次数最少的
            minHeap.pop();
        iter++;
    }

    vector res(k);
    while(k--)
    {
        res[k]=minHeap.top().second;//记录该元素
        minHeap.pop();
    }
    return res;
    }
};

 

你可能感兴趣的:(leetcode 前k个高频元素)