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 个高频元素(优先队列)相关推荐

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

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

  2. 力扣 347. 前 K 个高频元素

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

  3. leetcode(力扣) 347. 前 K 个高频元素(优先队列 堆 哈希计数器)

    文章目录 题目描述 思路分析 法一( 哈希计数): 法二(堆): 完整代码 题目描述 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. ...

  4. leetcode力扣347. 前 K 个高频元素

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

  5. 力扣347——前K个高频元素

    题目描述 给定一个数组,求前 k 个最频繁的数字. 输入输出样例 输入是一个数组和一个目标值 k.输出是一个长度为 k 的数组. Input: nums = [1,1,1,1,2,2,3,4], k ...

  6. 力扣347. 前 K 个高频元素(JavaScript,堆)

    //小顶堆class MinHeap{constructor(){this.heap=[]}//交换节点swap(i1,i2){[this.heap[i1],this.heap[i2]]=[this. ...

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

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

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

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

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

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

最新文章

  1. iOS获取键盘的高度
  2. CentOS-6.5安装配置Tengine
  3. linux下的二进制文件的编辑和查看 -
  4. Flink快速入门wordcount示例(scala版)
  5. 如何在php7.2/php7.3中安装mcrypt扩展?
  6. myisam怎么读_耗时半年,我成功“逆袭”,拿下美团offer(刷面试题+读源码+项目准备)...
  7. d3.js 教程 模仿echarts折线图
  8. zzulioj1111: 多个整数的逆序输出(函数专题)
  9. SpringCloud Ribbon之概述(一)
  10. hive编程指南_第三篇|Spark SQL编程指南
  11. 【备忘】尚硅谷Scala视频
  12. Ubuntu 配置 SFTP 服务器
  13. 7.4 SiamFC
  14. TIBCO Spotfire使用技巧:如何在Web网页中嵌入TIBCO Spotfire可视化视图
  15. AI插件开发入门教程001 - AI脚本简介
  16. Threejs 设置线条宽度(lineWidth) 无效问题
  17. 做网站必备!该文介绍下国内服务器与国外服务器的区别
  18. 三种网络模型(OSI七层参考模型、TCP/IP参考模型、五层参模型)
  19. [Usaco2010 Hol]cowpol 奶牛政坛(入门oj Problem 5274)
  20. #深入理解# 机器学习中误差和残差的区别

热门文章

  1. 路还很长!有一个人陪让我不惧任何
  2. CUDA与cuDNN 关系
  3. OPENGL ES 3.0 学习总结
  4. 必读,一文普及MES系统知识
  5. corona remove
  6. fastjson的基本使用方法
  7. C#中的方括号的语法及作用
  8. 【趋势分析】医疗行业迎来发展机遇期,不同类别医企该如何发力?
  9. 交换机的连接方式有哪些?
  10. 解决windows系统字体设置为125大小导致程序界面位置不一致的问题