LeetCode 347 Top K Frequent Elements
思路
遍历一次数组,统计每个元素的频率。然后按照频率为key,将元素放进一个value为vector的map里。该map的key按照从大到小排序。
代码
class Solution {
public:
vector<int> topKFrequent(vector<int>& nums, int k) {
unordered_map<int, int> frequency;
for (const auto &num : nums)
++frequency[num];
map<int, vector<int>, greater<int>> mp;
for (auto i = frequency.begin(); i != frequency.end(); ++i) {
if (!mp.count(i->second)) {
mp[i->second] = vector<int>{i->first};
}
else mp[i->second].push_back(i->first);
}
vector<int> result;
for (auto i = mp.begin(); result.size() < k; ++i) {
result.insert(result.begin(), (i->second).begin(), (i->second).end());
}
return result;
}
};