力扣347.前 K 个高频元素(优先队列)
347. 前 K 个高频元素
本题的关键点是对map中的value进行排序。
题目中涉及前几个,考虑优先队列
优先队列要通过lamda表达式写清楚是大数在顶还是小数在顶
逆序:
PriorityQueue<Integer> queue = new PriorityQueue<>(((o1, o2) -> o2-o1));
顺序:
PriorityQueue<Map.Entry<Integer, Integer>> queue = new PriorityQueue<>((o1, o2) -> o1.getValue() - o2.getValue());
泛型中是对象,要明确比较的对象的什么,这点很像Compare
接下来就是要把map中的key-value结构一个一个按照对象取出,利用map.entrySet()
最后总结这道题就是:
思路就是他先hashmap,然后通过entrySet()返回一个集合,然后遍历该集合,用小跟堆来存储
附上代码
class Solution {public int[] topKFrequent(int[] nums, int k) {int[] result = new int[k];HashMap<Integer, Integer> map = new HashMap<>();for (int num : nums) {map.put(num, map.getOrDefault(num, 0) + 1);}Set<Map.Entry<Integer, Integer>> entries = map.entrySet();// 根据map的value值正序排,相当于一个小顶堆PriorityQueue<Map.Entry<Integer, Integer>> queue = new PriorityQueue<>((o1, o2) -> o1.getValue() - o2.getValue());for (Map.Entry<Integer, Integer> entry : entries) {queue.offer(entry);if (queue.size() > k) {queue.poll();}}for (int i = k - 1; i >= 0; i--) {result[i] = queue.poll().getKey();}return result;}
}
力扣347.前 K 个高频元素(优先队列)相关推荐
- 力扣347 前 K 个高频元素 -- JS
347. 前 K 个高频元素 - 力扣(LeetCode) (leetcode-cn.com) 一:使用对象进行解题,对象的属性为给定数组的元素,属性值为给定数组元素出现的次数: 二:把对象转成数组, ...
- 力扣 347. 前 K 个高频元素
题目 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 输入: nums = [1,1,1,2,2,3], k = 2 输出: ...
- leetcode(力扣) 347. 前 K 个高频元素(优先队列 堆 哈希计数器)
文章目录 题目描述 思路分析 法一( 哈希计数): 法二(堆): 完整代码 题目描述 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. ...
- leetcode力扣347. 前 K 个高频元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], ...
- 力扣347——前K个高频元素
题目描述 给定一个数组,求前 k 个最频繁的数字. 输入输出样例 输入是一个数组和一个目标值 k.输出是一个长度为 k 的数组. Input: nums = [1,1,1,1,2,2,3,4], k ...
- 力扣347. 前 K 个高频元素(JavaScript,堆)
//小顶堆class MinHeap{constructor(){this.heap=[]}//交换节点swap(i1,i2){[this.heap[i1],this.heap[i2]]=[this. ...
- 模拟卷Leetcode【普通】347. 前 K 个高频元素
347. 前 K 个高频元素 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2,2 ...
- 【LeetCode】【HOT】347. 前 K 个高频元素(哈希表+优先队列)
[LeetCode][HOT]347. 前 K 个高频元素 文章目录 [LeetCode][HOT]347. 前 K 个高频元素 package hot;import java.util.Arrays ...
- LeetCode——347. 前 K 个高频元素【最小堆实现】
LeetCode--347. 前 K 个高频元素[最小堆实现] 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例1: 输入: n ...
最新文章
- iOS获取键盘的高度
- CentOS-6.5安装配置Tengine
- linux下的二进制文件的编辑和查看 -
- Flink快速入门wordcount示例(scala版)
- 如何在php7.2/php7.3中安装mcrypt扩展?
- myisam怎么读_耗时半年,我成功“逆袭”,拿下美团offer(刷面试题+读源码+项目准备)...
- d3.js 教程 模仿echarts折线图
- zzulioj1111: 多个整数的逆序输出(函数专题)
- SpringCloud Ribbon之概述(一)
- hive编程指南_第三篇|Spark SQL编程指南
- 【备忘】尚硅谷Scala视频
- Ubuntu 配置 SFTP 服务器
- 7.4 SiamFC
- TIBCO Spotfire使用技巧:如何在Web网页中嵌入TIBCO Spotfire可视化视图
- AI插件开发入门教程001 - AI脚本简介
- Threejs 设置线条宽度(lineWidth) 无效问题
- 做网站必备!该文介绍下国内服务器与国外服务器的区别
- 三种网络模型(OSI七层参考模型、TCP/IP参考模型、五层参模型)
- [Usaco2010 Hol]cowpol 奶牛政坛(入门oj Problem 5274)
- #深入理解# 机器学习中误差和残差的区别