当前位置:   article > 正文

leecode 347:计数组中前K个高频元素

leecode 347:计数组中前K个高频元素

  1. #include <iostream>
  2. #include <vector>
  3. #include <unordered_map>
  4. #include <queue>
  5. #include <algorithm>
  6. using namespace std;
  7. vector<int> count(vector<int> nums,int k)
  8. {
  9.   unordered_map<int,int>  map;//key
  10.   //举例:nums:1 1 1 2 2 3
  11.   for(auto num:nums)
  12.   {
  13.    map[num]++; //统计map[1]、map[2]、map[3]的个数
  14.   }
  15.   vector<int> res;
  16.   priority_queue<pair<int,int> > pq;//满足先进先出,主要是队头出来,队尾插入数据
  17.   for(auto it=map.begin();it!=map.end();it++){
  18.       pq.push(make_pair(it->second,it->first ));//按照频率排列(默认是less,从大到小)
  19.       if(pq.size()>(int)map.size()-k){
  20.           res.push_back(pq.top().second);
  21.           pq.pop();
  22.       }
  23.   }
  24.   return res;
  25. }
  26. int main() {
  27.  
  28.     int n;
  29.     vector<int>  arr={1,1,1,2,2,3};//test
  30.     int k=2;
  31.     vector<int>  res=count(arr,k);
  32.     sort(res.begin(),res.end());
  33.     for(auto x:res){
  34.         cout<<x<<" ";
  35.     }
  36.     cout<<endl;
  37.     return 0;
  38. }

link
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/677765
推荐阅读
相关标签
  

闽ICP备14008679号