【20230401】【每日一题】前K个高频元素
给你一个整数数组 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个高频元素相关推荐
- 2020_9_7 每日一题 前 K 个高频元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], ...
- 力扣刷题-前k个高频元素
力扣刷题-前k个高频元素 题目: 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2 ...
- Leetcode题347、前K个高频元素(Python题解)Amazon面试题
问题: 题目来源:力扣(LeetCode) leetcode347.前K个高频元素 难度:中等 分析: 本题解提供四种方法,分别是python的Counter技巧.堆.桶排序.快排. 对于python ...
- leetcode:前 K 个高频元素、删除字符串中的所有相邻重复项、有多少小于当前数字的数字、有效的山脉数组、独一无二的出现次数(JavaScript)
文章目录 347. 前 K 个高频元素 思路 1047. 删除字符串中的所有相邻重复项 思路 1365. 有多少小于当前数字的数字 思路 优化 继续优化 完整代码 941. 有效的山脉数组 思路 12 ...
- (补)算法训练Day13 | LeetCode150. 逆波兰表达式求值(栈应用);LeetCode239. 滑动窗口最大值(单调队列);LeetCode347. 前K个高频元素(小顶堆,优先级队列)
目录 LeetCode150. 逆波兰表达式求值 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 LeetCode239. 滑动窗口最大值 1. 思路 2. 代码实现 3. 复杂度分析 4. ...
- 模拟卷Leetcode【普通】347. 前 K 个高频元素
347. 前 K 个高频元素 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2,2 ...
- 前K个高频元素(top k)(TX)
思路 这道题目主要涉及到如下三块内容: 1.要统计元素出现频率 2.对频率排序 3.找出前K个高频元素 首先统计元素出现的频率,这一类的问题可以使用map来进行统计. 然后是对频率进行排序,这里我们可 ...
- 统计list里面相同元素个数_LeetCode 第 347 号问题:前 K 个高频元素
本文首发于公众号「五分钟学算法」,是图解 LeetCode 系列文章之一. 个人网站:https://www.cxyxiaowu.com 今天分享的题目来源于 LeetCode 上第 347 号问题: ...
- 215.数组中的第K个最大元素/347. 前 K 个高频元素
2020-05-25 1.题目描述 数组中的第K个最大元素 2.题解 1.使用冒泡排序 2.使用快速排序 3.优先队列(内部是用堆来实现的) 3.代码 class Solution { public: ...
最新文章
- gvgai框架搭建及controller编写
- python环境变量配置_Anaconda从下载到环境变量配置(windows)
- namespace nvinfer1
- Ice笔记-利用Ice::Application类简化Ice应用
- 智能老旧模糊照片修复——C++实现GFPGAN模型推理
- 225. Implement Stack using Queues
- iOS8 TabBarItem设置自定义图片问题
- vs里根据json快速创建对应类的方法
- Pytest之pytest.assume用例中断言1失败会继续执行后续代码断言2
- LiveCDLiveUSB制作
- 凌云一周看点 | 什么是云原生数据库;因云而生的云原生网络;大型团队如何从0到1自建SRE体系;空间数据模型之从CAD到BIM...
- 关于 Matlab R2014a下载与安装流程
- ZZULIOJ.1137: 查找最大元素
- GAN变种介绍 - DCGAN、InfoGAN、CycleGAN、WGAN、Self-Attention GAN、BigGAN
- 8- 性能测试面试题(测试框架总结)史上最全面试题
- 君正Ingenic X1000E_halley2 更改Logo
- 「IT行业必会的基本概念原理」计算机网路基本概念
- python数据分析可视化项目——游戏销售量
- C++ OpenCV视频操作之CamShift跟踪算法
- 使用全加器实现补码的加减运算
热门文章
- 外企高管合唱“骊歌” SUN、AMD相继人事震荡外企高管合唱“骊歌” SUN、AMD相继人事震荡...
- 计算机无法打开eventlog,笔记本电脑经常会假死,日志Kernel-Power和eventlog6008
- 铝/石墨烯复合材料结晶过程lammps模拟
- AirSim图像获取
- 新兴计算机网络,新兴媒体对于计算机网络的推动与发展论文
- Spring Boot 集成 AmazonS3 存储服务教程
- ClickBench 最新跑分排行榜,黑马出现!
- PS调整风景照片偏色调整:还原图像本来的影调和色调
- Access操作与SQL语句:数据分组
- java中的工厂_java中的工厂模式