Top K Frequent Elements

第60天。hhh,一回家就没做了。在家无聊到开始找活干了。

今天的题目是347. Top K Frequent Elements :

挺简单的题目,先统计元素出现的次数,然后根据元素出现的次数来进行排序,然后取出现次数最多的前K个即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vector<int> topKFrequent1(vector<int>& nums, int k) {
vector<int> res(k);
unordered_map<int, int> imap;
for(int i = 0, n = nums.size(); i < n; i++) {
imap[nums[i]]++;
}

vector<pair<int, int>> temp(imap.begin(), imap.end());
auto f = [](const pair<int, int> &p1, const pair<int, int> &p2) {
return p1.second > p2.second;
};
sort(temp.begin(), temp.end(), f);
for(int i = 0;i < k; i++) {
res[i] = temp[i].first;
}
return res;
}