Leetcode 347. 前K个高频元素 解题思路及C++实现
方法一:最小堆
解题思路:
先使用一个unordered_map来遍历nums容器,得到每个元素对应的频数。
再使用最小堆,对unordered_map中的频数进行遍历,得到k个最大的频数对应的<频数,元素>对。
最后将最小堆中的元素push_back进结果容器res中。
class Solution {
public:vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int, int> mp; //unordered_map中存储的是<元素,频数>for(auto num: nums) mp[num]++;priority_queue< pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>> > pq; //最小堆,存储的是<频数, 元素>for(auto val: mp){pq.push(make_pair(val.second, val.first));if(pq.size() > k) pq.pop();}//将最小堆中的元素放在res容器中,并返回结果vector<int> res;for(int i = 0; i < k; i++){res.push_back(pq.top().second);pq.pop();}return res;}
};
Leetcode 347. 前K个高频元素 解题思路及C++实现相关推荐
- LeetCode——347. 前 K 个高频元素【最小堆实现】
LeetCode--347. 前 K 个高频元素[最小堆实现] 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例1: 输入: n ...
- Leetcode 347. 前 K 个高频元素
Leetcode 347. 前 K 个高频元素 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/top-k-freque ...
- Java实现 LeetCode 347 前 K 个高频元素
347. 前 K 个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输 ...
- LeetCode 347. 前 K 个高频元素(哈希/优先队列)
文章目录 1. 题目 2. 解题 2.1 哈希 2.2 优先队列 1. 题目 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], ...
- LeetCode 347. 前 K 个高频元素(C++)*
该题在不考虑时间复杂度的要求下,可以使用哈希表来存储元素的次数,或者使用排序算法:为了提高算法的效率,考虑使用优先队列来实现大根堆. 1.题目如下: 给你一个整数数组 nums 和一个整数 k ,请你 ...
- Leetcode 347.前K个高频元素
Time: 20190910 Type: Medium 题目描述 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 ...
- 【LeetCode】【HOT】347. 前 K 个高频元素(哈希表+优先队列)
[LeetCode][HOT]347. 前 K 个高频元素 文章目录 [LeetCode][HOT]347. 前 K 个高频元素 package hot;import java.util.Arrays ...
- 模拟卷Leetcode【普通】347. 前 K 个高频元素
347. 前 K 个高频元素 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2,2 ...
- 力扣347 前 K 个高频元素 -- JS
347. 前 K 个高频元素 - 力扣(LeetCode) (leetcode-cn.com) 一:使用对象进行解题,对象的属性为给定数组的元素,属性值为给定数组元素出现的次数: 二:把对象转成数组, ...
最新文章
- java redis 网络断开_Redis长时间连接后自动断开
- 《电子商务法》实施倒计时,这些执行细则需注意!
- 健康心理要防八种“过度”
- linux 线程id 进程id,在Linux上显示正在运行的进程的线程ID
- Harmony OS — PageSliderIndicator滑动页面指示器
- Java编程思想 PDF
- c++简单程序实现——小公主养成记
- .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
- 电脑重装操作系统——使用U盘安装(简略步骤)
- jmeter访问网址
- matlab中全局变量的作用域,在simulink中使用全局变量的方法
- excel白屏未响应_Excel中出现无响应的解决方法
- 分时线的9代表什么_一位从亏损到稳赚的老股民告诉你:为什么要打板?
- # 深圳杯D题爬取电视收视率排行榜
- timesat数据如何读取_判二手车调表车另类方法。如何利用OBD读取可靠数据(技术类)...
- Luogu P2656 采蘑菇
- 平行因子-三维荧光-PARAFAC数据前处理
- 编写js,使用对象字面量的形式创建一个名字为可可的狗的对象,具体信息如下:
- String转JSON
- Django模型中的关系:一对一、一对多与多对多
热门文章
- python入门教程收藏_python入门教程:超详细保你1小时学会Python,快来收藏看看...
- html获取text值_Python小程序2获取href的值
- 重装 Linux 记录
- ubuntu 下安装 activate-power-mode
- 信息编码:位操作布尔值编码
- POJ 2485-Highways
- 过程中心方法论,事务中心方法论。
- 高质量c/c++编程(5)
- Ubuntu16.04安装NVIDA显卡驱动
- 你以为 CSS 只是个简单的布局?装逼指南了解一下