Leetcode 347. 前 K 个高频元素
地址 https://leetcode-cn.com/problems/top-k-frequent-elements/
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。
示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]
示例 2:
输入: nums = [1], k = 1
输出: [1]
提示:
1 <= nums.length <= 105
k 的取值范围是 [1, 数组中不相同的元素的个数]
题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的
进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。
class Solution {
public:
unordered_map AB;
map> B_VectorA;
vector topKFrequent(vector& nums, int k) {
for (int i = 0; i < nums.size(); i++) {
int v = nums[i]; AB[v]++;
}
for (auto& e : AB) {
B_VectorA[e.second].push_back(e.first);
}
int i = k;
vector ans;
for (auto it = B_VectorA.rbegin(); it != B_VectorA.rend(); it++) {
int count = it->first;
for (auto& ele : it->second) {
if (i == 0) { break; }
ans.push_back(ele); i--;
}
if (i == 0) { break; }
}
return ans;
}
};
我的视频题解空间