文章目录

  • 1. 题目
  • 2. 解题
    • 2.1 哈希
    • 2.2 优先队列

1. 题目

给定一个非空的整数数组,返回其中出现频率前 k 高的元素。

示例 1:
输入: nums = [1,1,1,2,2,3], k = 2
输出: [1,2]示例 2:
输入: nums = [1], k = 1
输出: [1]
说明:
你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。
你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/top-k-frequent-elements
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 哈希

class Solution {public:vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int,int> m;vector<int> ans;for(int num:nums)m[num]++;vector<pair<int,int>> v(m.begin(), m.end());//map不支持排序,转成vectorsort(v.begin(), v.end(),[](pair<int,int> &a, pair<int,int> &b){return a.second > b.second;});  //新的比较函数写法auto it = v.begin();while(k--){ans.push_back(it->first);++it;}return ans;}
};

2.2 优先队列

class Solution {struct cmp//必须写struct,不能写class{bool operator()(pair<int, int>& a, pair<int, int>& b){ return a.second > b.second; }//小顶堆};
public:vector<int> topKFrequent(vector<int>& nums, int k) {unordered_map<int,int> m;vector<int> ans;for(int num:nums)m[num]++;priority_queue<pair<int,int>,vector<pair<int,int>>, cmp> q;for(auto a:m){q.push(a);if(q.size() > k)q.pop();}while(!q.empty()){ans.push_back(q.top().first);q.pop();}return ans;}
};

LeetCode 347. 前 K 个高频元素(哈希/优先队列)相关推荐

  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 个高频元素(C++)*

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

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

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

  6. Leetcode 347. 前K个高频元素 解题思路及C++实现

    方法一:最小堆 解题思路: 先使用一个unordered_map来遍历nums容器,得到每个元素对应的频数. 再使用最小堆,对unordered_map中的频数进行遍历,得到k个最大的频数对应的< ...

  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. ISA Server中基于L2TP实现远程拨入***
  2. DISTINCT 去重---SQL
  3. 黄金法则----比较法则
  4. 【机器学习基础】机器学习小抄.pdf(像背托福单词一样理解机器学习)
  5. 蓝桥杯第八届省赛JAVA真题----Excel地址
  6. ElasticSearch通配符 * 查询(英文检索)
  7. Lucene应用开发揭秘 上线啦!((更新程度:完毕))
  8. VC中TabControl控件使用方法(转载)
  9. PyTorch 1.6、TensorFlow 2.3、Pandas 1.1 同日发布!都有哪些新特性?
  10. 机器学习:LibSVM与weka在eclipse中的使用
  11. 华为首度公开披露员工薪酬:去年平均年薪近28万
  12. 实例理解月末结账任务中,重估未结外币余额的原理
  13. 学会Zbrush硬表面建模,造出属于自己的机甲模型
  14. 天翼云内网服务器映射端口,天翼云服务器创建对等连接(不同账户组内网)
  15. 利用AST对抗js混淆(三) 控制流平坦化(Control Flow Flattening)的处理
  16. 云师大计算机调剂,云南师范大学调剂公告
  17. 加拿大存储厂商将在二战掩体中建设云数据中心
  18. java字符转成ncr_用Java打印所有可能的nCr组合
  19. 基于keras与tensorflow手工实现ResNet50网络
  20. 【bzoj2326】【HNOI2011】【数学作业】

热门文章

  1. w3wp oracle,w3wp.exe占用CPU超过50%的处理
  2. 在vue.js引用图片的问题
  3. Spring MVC 使用介绍(二)—— DispatcherServlet
  4. A Simple Note on P4FPGA: A Rapid Prototyping Framework for P4
  5. VirtualBox设置共享目录(主机win7,虚拟机Ubuntu)
  6. 转:绝对干货--WordPress自定义查询wp_query所有参数详细注释
  7. ApplicationContext容器的设计原理
  8. 使用Marshal.Copy把Txt行数据转为Struct类型值
  9. ie下滚动条样式设置
  10. java 守护线程 run_java守护线程(后台线程)