当前位置:   article > 正文

leetcode 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. int n;
  28. vector<int> arr={1,1,1,2,2,3};//test
  29. int k=2;
  30. vector<int> res=count(arr,k);
  31. sort(res.begin(),res.end());
  32. for(auto x:res){
  33. cout<<x<<" ";
  34. }
  35. cout<<endl;
  36. return 0;
  37. }

 

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

闽ICP备14008679号