vector<int> topKFrequent(vector<int>& nums, int k){
unordered_map<int,int> map;
for(int i=0;i<nums.size();i++){
map[nums[i]]++;
}
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> q;
for(unordered_map<int,int>::iterator it=map.begin();it!=map.end();it++){
if(q.size()==k){
if(q.top().first<it->second){
q.pop();
q.push(make_pair(it->second,it->first));
}
}else{
q.push(make_pair(it->second,it->first));
}
}
vector<int> res;
while(!q.empty()){
res.push_back(q.top().second);
q.pop();
}