当前位置: 首页 > news >正文

【leetcode hot 100 347】前 K 个高频元素

解法一:用map的value记录key出现的次数,用PriorityQueue构造最小堆。

class Solution {public int[] topKFrequent(int[] nums, int k) {// 把元素放在map中Map<Integer,Integer> map = new HashMap<>();for(int num:nums){if(map.containsKey(num)){map.put(num, map.get(num)+1);}else{map.put(num,1);}}// 构造最小堆PriorityQueue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>(){public int compare(Integer o1, Integer o2){return map.get(o1)-map.get(o2);   // 这里不是o1-o2}});// 向堆中加入元素for(int key:map.keySet()){if(queue.size()<k){// 还可以加入元素queue.offer(key);}else if(map.get(queue.peek())<map.get(key)){// 元素满k个了,但是新加入的元素更多queue.poll();queue.offer(key);}}// 输出int[] result = new int[k];for(int i=0; i<k; i++){result[i] = queue.poll();}return result;}
}

注意:

  • 加入元素时,先判断是否到达k个,未到达直接加入;否则,判断是否大于堆顶以决定是否加入。
  • 构造最小堆
PriorityQueue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>(){public int compare(Integer o1, Integer o2){return map.get(o1)-map.get(o2);   // 这里不是o1-o2}});

http://www.mrgr.cn/news/96172.html

相关文章:

  • centos8上实现lvs集群负载均衡nat模式
  • mysql--主从复制--部署
  • 循环神经网络(RNN)
  • 大数据(2)Hadoop架构深度拆解:HDFS与MapReduce企业级实战与高阶调优
  • STM32F103_LL库+寄存器学习笔记08 - DMA串口发送,开启DMA传输完成中断
  • java程序员实用英语学习总结
  • STM32F103_LL库+寄存器学习笔记07 - 串口接收缓冲区非空中断
  • 网络安全法律法规简介
  • 锐捷EWEB路由器 timeout.php任意文件上传漏洞代码审计(DVB-2025-9003)
  • webpack配置详解+项目实战
  • pytorch+maskRcnn框架训练自己的模型以及模型导出ONXX格式供C++部署推理
  • 我的创作纪念日——三周年
  • unity 做一个圆形分比图
  • #C8# UVM中的factory机制 #S8.5# 对factory机制的重载进一步思考
  • 第十四届蓝桥杯省赛电子类单片机学习记录(客观题)
  • UDP视频传输中的丢包和播放花屏处理方法
  • Linux一步部署主DNS服务器
  • RGB-T综述
  • FALL靶场通关攻略
  • 【目标检测】【深度学习】【Pytorch版本】YOLOV1模型算法详解