力扣刷题记录82.1-----347. 前 K 个高频元素

目录

  • 一、题目
  • 二、代码
  • 三、运行结果


一、题目

力扣刷题记录82.1-----347. 前 K 个高频元素_第1张图片

二、代码

class Solution 
{
public:
    //l>r  就是小顶堆  这里提供的是权重的比较方法
    class mycomparsion
    {
        public:
            bool operator()(const pair<int, int>& left, const pair<int,int>& right)
            {
                return left.second>right.second;
            }
    };
    vector<int> topKFrequent(vector<int>& nums, int k) 
    {
       int i;
       unordered_map <int,int>my_map;
       int length=nums.size();
       for(i=0;i<length;i++)
       {
           my_map[nums[i]]++;
       }

       priority_queue<pair<int, int>, vector<pair<int,int>>,mycomparsion > pri_que;

       for(unordered_map <int,int>::iterator it=my_map.begin();it!=my_map.end();it++)
       {
           pri_que.push(*it);
           if(pri_que.size()>k)
           {
               pri_que.pop();
           }
       }

       vector<int> result(k);

       for(i=0;i<k;i++)
       {
          result[i]=pri_que.top().first;
          pri_que.pop();
       }

       return result;

    }
};

三、运行结果

力扣刷题记录82.1-----347. 前 K 个高频元素_第2张图片

你可能感兴趣的:(leetcode,算法,c++)