哈希表+优先队列
优先队列中emplace(type1 x1,…,typen xn)函数参数数量和类型是不确定的,只有当优先队列内部存的是结构体或者类,这个函数才有它独特的作用。emplace的参数会传到构造函数中构造一个新的对象,然后再把对象放到优先队列里,和push类似,但是push的参数只有一个,且参数数据类型必须和优先队列所存数据类型相同。
class Solution {
public:
vector<int> topKFrequent(vector<int>& nums, int k) {
unordered_map<int, int> map;
for(int& d: nums) map[d]++;
priority_queue<pair<int, int>> que;
for(auto& d:map) que.emplace(d.second, d.first);
vector<int> ans;
for(int i = 0; i < k; i++){
ans.push_back(que.top().second);
que.pop();
}
return ans;
}
};