class Solution {
public:
struct compare {
bool operator()(const pair<int, int>& a, const pair<int, int>& b) {
return a.second > b.second; // 频率小的优先级高
}
};
vector<int> topKFrequent(vector<int>& nums, int k) {
unordered_map<int, int> hash;
for(int val : nums){
hash[val]++;
}
//建立一个最小堆
priority_queue<pair<int, int>, vector<pair<int, int>>, compare> minHeap;
for (auto it = hash.begin(); it != hash.end(); ++it) {
minHeap.push(*it);
if(minHeap.size() > k){
minHeap.pop();
}
}
vector<int> res;
while(!minHeap.empty()){
res.push_back(minHeap.top().first);
minHeap.pop();
}
return res;
}
};
LeetCode Hot100 347.前 k 个高频元素
最新推荐文章于 2024-10-08 10:36:00 发布