美文网首页
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