347前K个高频元素

2020-06-25  本文已影响0人  su945

题目描述

给定一个非空的整数数组,返回其中出现频率前 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());
    }
};
上一篇下一篇

猜你喜欢

热点阅读