LeetCode:75.前K个高频元素
目录
1.前K个高频元素
1.前K个高频元素
class Solution {
public:vector<int> topKFrequent(vector<int>& nums, int k) {// 第一步:统计每个元素的出现次数unordered_map<int, int> hash;int max_number = 0;for (int x : nums) {hash[x]++;max_number = max(max_number, hash[x]);}// 第二步:把出现次数相同的元素,放到同一个桶中vector<vector<int>> buckets(max_number + 1);for (auto& [x, c] : hash) buckets[c].push_back(x); // 把元素 x 放入“出现次数为 c”的桶// 第三步:倒序遍历 buckets,把出现次数前 k 大的元素加入答案vector<int> ans;for (int i = max_number; i >= 0 && ans.size() < k; i--)// 把 buckets[i] 中的所有元素按顺序追加到 ans 的末尾ans.insert(ans.end(), buckets[i].begin(), buckets[i].end());return ans;}
};