方法一:最小堆

解题思路:

先使用一个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++实现相关推荐

  1. LeetCode——347. 前 K 个高频元素【最小堆实现】

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

  2. Leetcode 347. 前 K 个高频元素

    Leetcode 347. 前 K 个高频元素 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/top-k-freque ...

  3. Java实现 LeetCode 347 前 K 个高频元素

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

  4. LeetCode 347. 前 K 个高频元素(哈希/优先队列)

    文章目录 1. 题目 2. 解题 2.1 哈希 2.2 优先队列 1. 题目 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], ...

  5. LeetCode 347. 前 K 个高频元素(C++)*

    该题在不考虑时间复杂度的要求下,可以使用哈希表来存储元素的次数,或者使用排序算法:为了提高算法的效率,考虑使用优先队列来实现大根堆. 1.题目如下: 给你一个整数数组 nums 和一个整数 k ,请你 ...

  6. Leetcode 347.前K个高频元素

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

  7. 【LeetCode】【HOT】347. 前 K 个高频元素(哈希表+优先队列)

    [LeetCode][HOT]347. 前 K 个高频元素 文章目录 [LeetCode][HOT]347. 前 K 个高频元素 package hot;import java.util.Arrays ...

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

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

  9. 力扣347 前 K 个高频元素 -- JS

    347. 前 K 个高频元素 - 力扣(LeetCode) (leetcode-cn.com) 一:使用对象进行解题,对象的属性为给定数组的元素,属性值为给定数组元素出现的次数: 二:把对象转成数组, ...

最新文章

  1. java redis 网络断开_Redis长时间连接后自动断开
  2. 《电子商务法》实施倒计时,这些执行细则需注意!
  3. 健康心理要防八种“过度”
  4. linux 线程id 进程id,在Linux上显示正在运行的进程的线程ID
  5. Harmony OS — PageSliderIndicator滑动页面指示器
  6. Java编程思想 PDF
  7. c++简单程序实现——小公主养成记
  8. .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  9. 电脑重装操作系统——使用U盘安装(简略步骤)
  10. jmeter访问网址
  11. matlab中全局变量的作用域,在simulink中使用全局变量的方法
  12. excel白屏未响应_Excel中出现无响应的解决方法
  13. 分时线的9代表什么_一位从亏损到稳赚的老股民告诉你:为什么要打板?
  14. # 深圳杯D题爬取电视收视率排行榜
  15. timesat数据如何读取_判二手车调表车另类方法。如何利用OBD读取可靠数据(技术类)...
  16. Luogu P2656 采蘑菇
  17. 平行因子-三维荧光-PARAFAC数据前处理
  18. 编写js,使用对象字面量的形式创建一个名字为可可的狗的对象,具体信息如下:
  19. String转JSON
  20. Django模型中的关系:一对一、一对多与多对多

热门文章

  1. python入门教程收藏_python入门教程:超详细保你1小时学会Python,快来收藏看看...
  2. html获取text值_Python小程序2获取href的值
  3. 重装 Linux 记录
  4. ubuntu 下安装 activate-power-mode
  5. 信息编码:位操作布尔值编码
  6. POJ 2485-Highways
  7. 过程中心方法论,事务中心方法论。
  8. 高质量c/c++编程(5)
  9. Ubuntu16.04安装NVIDA显卡驱动
  10. 你以为 CSS 只是个简单的布局?装逼指南了解一下