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


  • 统计元素出现的频率 ---用map
  • 对出现的频率进行排序---优先级队列
  • 找出前K个高频元素

优先级队列:披着队列外衣的堆

堆是一颗完全二叉树,树中每个节点的值都不小于(或不大于)其左右孩子的值。

大顶堆(堆头是最大元素)   小顶堆(堆头是最小元素)

priority_queue< type, container, function >

type:数据类型;
container:实现优先队列的底层容器;
function:元素之间的比较方式;
对于container,要求必须是数组形式实现的容器,例如vector、deque,而不能使list。
在STL中,默认情况下(不加后面两个参数)是以vector为容器,以 operator< 为比较方式,所以在只使用第一个参数时,优先队列默认是一个最大堆,每次输出的堆顶元素是此时堆中的最大元素。


class Solution {
public:class myCompare{public:bool operator()(const pair<int,int>& lhs,const pair<int,int>& rhs){return  lhs.second>rhs.second;}};vector<int> topKFrequent(vector<int>& nums, int k) {//统计元素出现的频率unordered_map<int,int> map;for(int num : nums){map[num]++;}//小顶堆priority_queue<pair<int,int>,vector<pair<int,int>>,myCompare> priority_que;//用固定大小k的小顶堆,扫描所有频率for(auto it=map.begin();it!=map.end();it++){priority_que.push(*it);if(priority_que.size()>k){priority_que.pop();//把小的弹出去}}vector<int> res(k);for(int i=k-1;i>=0;i--){res[i]=priority_que.top().first;priority_que.pop();}return res;}
};

【20230401】【每日一题】前K个高频元素相关推荐

  1. 2020_9_7 每日一题 前 K 个高频元素

    给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], ...

  2. 力扣刷题-前k个高频元素

    力扣刷题-前k个高频元素 题目: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2 ...

  3. Leetcode题347、前K个高频元素(Python题解)Amazon面试题

    问题: 题目来源:力扣(LeetCode) leetcode347.前K个高频元素 难度:中等 分析: 本题解提供四种方法,分别是python的Counter技巧.堆.桶排序.快排. 对于python ...

  4. leetcode:前 K 个高频元素、删除字符串中的所有相邻重复项、有多少小于当前数字的数字、有效的山脉数组、独一无二的出现次数(JavaScript)

    文章目录 347. 前 K 个高频元素 思路 1047. 删除字符串中的所有相邻重复项 思路 1365. 有多少小于当前数字的数字 思路 优化 继续优化 完整代码 941. 有效的山脉数组 思路 12 ...

  5. (补)算法训练Day13 | LeetCode150. 逆波兰表达式求值(栈应用);LeetCode239. 滑动窗口最大值(单调队列);LeetCode347. 前K个高频元素(小顶堆,优先级队列)

    目录 LeetCode150. 逆波兰表达式求值 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 LeetCode239. 滑动窗口最大值 1. 思路 2. 代码实现 3. 复杂度分析 4. ...

  6. 模拟卷Leetcode【普通】347. 前 K 个高频元素

    347. 前 K 个高频元素 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2,2 ...

  7. 前K个高频元素(top k)(TX)

    思路 这道题目主要涉及到如下三块内容: 1.要统计元素出现频率 2.对频率排序 3.找出前K个高频元素 首先统计元素出现的频率,这一类的问题可以使用map来进行统计. 然后是对频率进行排序,这里我们可 ...

  8. 统计list里面相同元素个数_LeetCode 第 347 号问题:前 K 个高频元素

    本文首发于公众号「五分钟学算法」,是图解 LeetCode 系列文章之一. 个人网站:https://www.cxyxiaowu.com 今天分享的题目来源于 LeetCode 上第 347 号问题: ...

  9. 215.数组中的第K个最大元素/347. 前 K 个高频元素

    2020-05-25 1.题目描述 数组中的第K个最大元素 2.题解 1.使用冒泡排序 2.使用快速排序 3.优先队列(内部是用堆来实现的) 3.代码 class Solution { public: ...

最新文章

  1. gvgai框架搭建及controller编写
  2. python环境变量配置_Anaconda从下载到环境变量配置(windows)
  3. namespace nvinfer1
  4. Ice笔记-利用Ice::Application类简化Ice应用
  5. 智能老旧模糊照片修复——C++实现GFPGAN模型推理
  6. 225. Implement Stack using Queues
  7. iOS8 TabBarItem设置自定义图片问题
  8. vs里根据json快速创建对应类的方法
  9. Pytest之pytest.assume用例中断言1失败会继续执行后续代码断言2
  10. LiveCDLiveUSB制作
  11. 凌云一周看点 | 什么是云原生数据库;因云而生的云原生网络;大型团队如何从0到1自建SRE体系;空间数据模型之从CAD到BIM...
  12. 关于 Matlab R2014a下载与安装流程
  13. ZZULIOJ.1137: 查找最大元素
  14. GAN变种介绍 - DCGAN、InfoGAN、CycleGAN、WGAN、Self-Attention GAN、BigGAN
  15. 8- 性能测试面试题(测试框架总结)史上最全面试题
  16. 君正Ingenic X1000E_halley2 更改Logo
  17. 「IT行业必会的基本概念原理」计算机网路基本概念
  18. python数据分析可视化项目——游戏销售量
  19. C++ OpenCV视频操作之CamShift跟踪算法
  20. 使用全加器实现补码的加减运算

热门文章

  1. 外企高管合唱“骊歌” SUN、AMD相继人事震荡外企高管合唱“骊歌” SUN、AMD相继人事震荡...
  2. 计算机无法打开eventlog,笔记本电脑经常会假死,日志Kernel-Power和eventlog6008
  3. 铝/石墨烯复合材料结晶过程lammps模拟
  4. AirSim图像获取
  5. 新兴计算机网络,新兴媒体对于计算机网络的推动与发展论文
  6. Spring Boot 集成 AmazonS3 存储服务教程
  7. ClickBench 最新跑分排行榜,黑马出现!
  8. PS调整风景照片偏色调整:还原图像本来的影调和色调
  9. Access操作与SQL语句:数据分组
  10. java中的工厂_java中的工厂模式