美文网首页
347前K个高频元素

347前K个高频元素

作者: su945 | 来源:发表于2020-06-25 14:44 被阅读0次

    题目描述

    给定一个非空的整数数组,返回其中出现频率前 k 高的元素。

    示例 1:

    输入: nums = [1,1,1,2,2,3], k = 2
    输出: [1,2]
    示例 2:

    输入: nums = [1], k = 1
    输出: [1]

    问题分析

    1.hashmap nums
    2.将map中的key和value保存至vetcor.second和vector.first
    3.sort自动比较根据vector.first从小到大排序
    4.将k个元素插入nums中
    5.取出后k个元素

    解题思路1

    class Solution {
    public:
        vector<int> topKFrequent(vector<int>& nums, int k) {
            //值,频率
            unordered_map<int, int> map;
            for (int i : nums) map[i]++;
            vector<pair<int, int>> res;
            //保存成频率,值
            for (auto it : map) res.push_back(make_pair(it.second, it.first));
            //根据频率排序,默认从小到大排列
            sort(res.begin(), res.end());
            for (int i = 1; i <=k; ++i) nums.push_back(res[res.size() - i].second);
            //最后传入的五个值
            return vector<int>(nums.end() - k, nums.end());
        }
    };
    

    相关文章

      网友评论

          本文标题:347前K个高频元素

          本文链接:https://www.haomeiwen.com/subject/fqusfktx.html