Leetcode

Leetcode.347.Top K Frequent Elem

2019-12-31  本文已影响0人  Jimmy木

题目

给定一个数组,输出出现频率最多的K个数。

Input: nums = [1,1,1,2,2,3], k = 2
Output: [1,2]
Input: nums = [1], k = 1
Output: [1]

思路

先用map计算每个数的出现频率,将map转化为数组进行倒序排序,取出k个数。

vector<int> topKFrequent(vector<int>& nums, int k) {
    vector<int> res;
    if (nums.empty()) return res;
    unordered_map<int, int> mp;
    for (auto& e : nums) mp[e]++;

    vector<pair<int, int>> count(mp.begin(), mp.end());
    sort(count.begin(), count.end(), [](pair<int, int> a, pair<int, int> b){return a.second > b.second;});
    for (int i = 0; i < k; i++) {
        res.push_back(count[i].first);
    }

    return res;
}

总结

熟练掌握容器的各种API,熟练掌握Lambda表达式。

上一篇下一篇

猜你喜欢

热点阅读