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

堆----2.前 K 个高频元素

347. 前 K 个高频元素 - 力扣(LeetCode)

/**

        桶排序:

                首先遍历数组,使用HashMap统计每个元素出现的次数

                创建一个大小为length + 1的List数组,下标代表元素出现次数,出现次数一致的元素放在同一个数组中

                倒数遍历List数组即可得得到前K个高频元素

        细节注意:

                长度为length的数组,可能存储的元素全部相同,则最高频元素出现次数为length

                下标代表频率即元素出现次数,则List数组大小需为length + 1

*/

class Solution {/**桶排序:首先遍历数组,使用HashMap统计每个元素出现的次数创建一个大小为length + 1的List数组,下标代表元素出现次数,出现次数一致的元素放在同一个数组中倒数遍历List数组即可得得到前K个高频元素细节注意:长度为length的数组,可能存储的元素全部相同,则最高频元素出现次数为length下标代表频率即元素出现次数,则List数组大小需为length + 1*/public int[] topKFrequent(int[] nums, int k) {//统计元素出现次数Map<Integer,Integer> countMap = new HashMap<>();for(int num : nums) {countMap.put(num,countMap.getOrDefault(num,0) + 1);}//创建List数组,按照出现次数,将元素存入List数组中List<Integer>[] buckets = new ArrayList[nums.length + 1];for(int num : countMap.keySet()) {//读取当前num的频率int freq = countMap.get(num); //将元素添加到对应的“频率桶中”if(buckets[freq] == null) {buckets[freq] = new ArrayList<>();}buckets[freq].add(num);}//倒序遍历频率桶收集结果int[] result = new int[k];int index = 0; //result填充位置for(int i = buckets.length - 1; i >= 0 && index < k; i--) {if(buckets[i] != null) {for(int num : buckets[i]) {result[index] =  num;index++;if(index == k) {break;}}}}return result;}
}

http://www.dtcms.com/a/311508.html

相关文章:

  • VirtualBox 的 HOST 键(主机键)是 右Ctrl 键(即键盘右侧的 Ctrl 键)笔记250802
  • 学习笔记:无锁队列的原理以及c++实现
  • Linux 高级 I/O 系统调用详解
  • Vue 响应式基础全解析2
  • Node.js中path模块的使用指南
  • InfluxDB 与 Node.js 框架:Express 集成方案(二)
  • 如何在`<link type=“icon“ href=`的`href`中写SVG并使用path标签? 笔记250802
  • 嵌入式 C 语言入门:递归与变量作用域学习笔记 —— 从概念到内存特性
  • 深入 Go 底层原理(十三):interface 的内部表示与动态派发
  • Javaweb————Apache Tomcat服务器介绍及Windows,Linux,MAC三种系统搭建Apache Tomcat
  • 技术文章:覆铜板的阻燃性
  • UniappDay07
  • 【AI】AIService(基本使用与指令定制)
  • cv快速input
  • 【云计算】云主机的亲和性策略(三):云主机 宿主机
  • Springboot原理和Maven高级
  • 操作系统:远程过程调用( Remote Procedure Call,RPC)
  • MQTT 入门教程:三步从 Docker 部署到 Java 客户端实现
  • Linux基础学习笔记二
  • MySQL PostgreSQL JDBC URL 配置允许批量操作
  • C语言输入安全10大边界漏洞解析与防御
  • 基于LSTM模型与加权链路预测的动态热门商品成长性分析
  • SpringBoot相关注解
  • 项目管理平台是什么?概念、定义、作用、主流厂商解读
  • docker:将python开发的大模型应用,打成docker容器
  • C#中的除法
  • PostGIS面试题及详细答案120道之 (081-090 )
  • cuda编程笔记(12)--学习cuFFT的简单使用
  • 【Mybatis】MyBatis分页的三种实现方式,Log4j的使用
  • Elasticsearch 混合检索一句 `retriever.rrf`,把语义召回与关键词召回融合到极致