347 前k个高频元素

题目

给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。

示例 1:

输入:nums = 1,1,1,2,2,3, k = 2

输出:1,2

示例 2:

输入:nums = 1, k = 1

输出:1

示例 3:

输入:nums = 1,2,1,2,1,2,3,1,3,2, k = 2

输出:1,2

思路

先把数组中所有的整数放到hash map里面,key是numi,value是频率

然后桶排序,建立一个长度为n+1的数组,目的是把hash map中的key放到数组序列value下面

最后从右到左遍历找出k个key即可

代码

bash 复制代码
class Solution {
public:
    vector<int> topKFrequent(vector<int>& nums, int k) {
        unordered_map<int,int> mp;
        vector<vector<int>>buck(nums.size()+1,vector<int>());
        vector <int> res;
        for(int i=0;i<nums.size();i++){
            mp[nums[i]]++;
        }
        for(auto &pair:mp){
            buck[pair.second].push_back(pair.first);
        }
        for(int i=buck.size()-1;i>0;i--){
            while(res.size()<k && !buck[i].empty()){
                res.push_back(buck[i].back());
                buck[i].pop_back();
            }
            if(res.size()==k) return res;
        }
        return res;
    }
};

注意key和value,步骤比较多,需要细心一点,不要弄反了

感谢 感谢华南溜达虎 力扣blind 75

相关推荐
Navigator_Z5 小时前
LeetCode //C - 1203. Sort Items by Groups Respecting Dependencies
c语言·算法·leetcode
临床数据科学和人工智能兴趣组5 小时前
R语言中,列表是一种非常灵活的数据结构,它可以存储不同类型的对象,如向量、矩阵、数据框、甚至其他列表
数据结构·数据库·r语言·r语言-4.2.1·临床试验
我变成萤火虫5 小时前
2026 ICPC沈阳邀请赛Vp补题
数据结构·c++·算法·贪心算法·stl·排序算法·动态规划
神威难绷泪5 小时前
数据结构:二叉树
数据结构·二叉树
风起洛阳@不良使5 小时前
中级软考(软件攻城狮)第3章知识点——数据结构与数据运算(线性结构+非线性结构)
数据结构·算法·链表
AndrewHZ6 小时前
图像处理入门009 | OpenCV 图像读取与显示:imread/imshow 全解析
图像处理·python·opencv·算法·计算机视觉·图像显示
学计算机的计算基6 小时前
TCP 传输层硬核整理:三次握手、四次挥手、拥塞控制一次讲透
java·网络·笔记·网络协议·算法
索西引擎6 小时前
【数据结构】B树与B+树:结构性质、对比分析与磁盘优化机理
数据结构·b树
xx~t6 小时前
嵌入式学习22
数据结构·学习·算法·排序算法
我是苏苏6 小时前
C#基础:不写for循环的五种方式
数据结构·算法·c#