> 文章列表 > 《每日一题》——347. 前 K 个高频元素

《每日一题》——347. 前 K 个高频元素

《每日一题》——347. 前 K 个高频元素

 

class Solution {
public:
//求前k大,用小根堆(堆顶元素最小的)
//优先队列默认生成大根堆;priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int,int>>> pq;生成小根堆vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int, int> mp;for (auto i : nums){mp[i]++;}priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int,int>>> pq;for (auto [num, count] : mp){pq.emplace(count, num);if (pq.size() > k) pq.pop();}vector<int> ret;while (!pq.empty()) {ret.emplace_back(pq.top().second);pq.pop();}return ret;}
};