
#include <iostream>
#include <vector>
#include <unordered_map>
#include <queue>
#include <algorithm>
using namespace std;
vector<int> count(vector<int> nums,int k)
{
unordered_map<int,int> map;//key
//举例:nums:1 1 1 2 2 3
for(auto num:nums)
{
map[num]++; //统计map[1]、map[2]、map[3]的个数
}
vector<int> res;
priority_queue<pair<int,int> > pq;//满足先进先出,主要是队头出来,队尾插入数据
for(auto it=map.begin();it!=map.end();it++){
pq.push(make_pair(it->second,it->first ));//按照频率排列(默认是less,从大到小)
if(pq.size()>(int)map.size()-k){
res.push_back(pq.top().second);
pq.pop();
}
}
return res;
}
int main() {
int n;
vector<int> arr={1,1,1,2,2,3};//test
int k=2;
vector<int> res=count(arr,k);
sort(res.begin(),res.end());
for(auto x:res){
cout<<x<<" ";
}
cout<<endl;
return 0;
}
link