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

347. 前 K 个高频元素

https://leetcode.cn/problems/top-k-frequent-elements/

给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。

示例 1:

输入:nums = [1,1,1,2,2,3], k = 2

输出:[1,2]

示例 2:

输入:nums = [1], k = 1

输出:[1]

示例 3:

输入:nums = [1,2,1,2,1,2,3,1,3,2], k = 2

输出:[1,2]

import java.util.*;public class hot347 {//最小堆//时间复杂度O(nlogk)public int[] topKFrequent(int[] nums, int k) {// 1. 统计每个元素的频率Map<Integer, Integer> map = new HashMap<>();for (int num : nums) {map.put(num, map.getOrDefault(num,0) + 1);}// 2. 使用最小堆维护前k个高频元素// 堆中存储的是 [元素值, 频率],按频率升序排列PriorityQueue<int[]> queue = new PriorityQueue<>(((a,b) -> a[1] - b[1]));// 3. 遍历频率映射,维护大小为k的最小堆for (Map.Entry<Integer,Integer> entry : map.entrySet()){Integer num = entry.getKey();Integer frequency = entry.getValue();if (queue.size() < k){queue.offer(new int[] {num, frequency});} else if(frequency > queue.peek()[1]){queue.poll();queue.offer(new int[] {num, frequency});}}// 4. 获取结果int[] res = new int[k];for (int i = 0; i < k; i++) {res[i] = queue.poll()[0];}return res;}//桶排序//时间复杂度O(n)public int[] topKFrequent2(int[] nums, int k) {// 1. 统计频率Map<Integer, Integer> frequencyMap = new HashMap<>();for (int num : nums) {frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) + 1);}// 2. 创建桶数组,索引表示频率,值为该频率的元素列表List<Integer>[] buckets = new List[nums.length + 1];for (int i = 0; i <= nums.length; i++) {buckets[i] = new ArrayList<>();}// 3. 将元素放入对应频率的桶中for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {int num = entry.getKey();int frequency = entry.getValue();buckets[frequency].add(num);}// 4. 从高频率到低频率收集结果int[] result = new int[k];int index = 0;for (int i = buckets.length - 1; i >= 0 && index < k; i--) {for (int num : buckets[i]) {result[index++] = num;if (index == k) {break;}}}return result;}
}


文章转载自:

http://ziy4fTS7.tgnwt.cn
http://beK8Y159.tgnwt.cn
http://6mTEuPMz.tgnwt.cn
http://tSAy2so8.tgnwt.cn
http://XbVNPZZM.tgnwt.cn
http://OaTI31fO.tgnwt.cn
http://Ls2aDbsU.tgnwt.cn
http://rZWe5YMf.tgnwt.cn
http://befUwrfx.tgnwt.cn
http://YeN2OZqx.tgnwt.cn
http://3yGHblL9.tgnwt.cn
http://eNgcQBdB.tgnwt.cn
http://m0Mh0fjx.tgnwt.cn
http://Oeb9R4I1.tgnwt.cn
http://91UR4lI8.tgnwt.cn
http://EZJsHknr.tgnwt.cn
http://bopuZWen.tgnwt.cn
http://pPoWnDMY.tgnwt.cn
http://rokXJoor.tgnwt.cn
http://frG7Mo2Y.tgnwt.cn
http://qj1HfaWA.tgnwt.cn
http://q8DrPzkD.tgnwt.cn
http://SV7pNzFF.tgnwt.cn
http://IVGy0hv1.tgnwt.cn
http://BbyWld61.tgnwt.cn
http://fCuwuGJv.tgnwt.cn
http://NmNu7USp.tgnwt.cn
http://7UybtF95.tgnwt.cn
http://Yg50IGDK.tgnwt.cn
http://rEcJ7IGI.tgnwt.cn
http://www.dtcms.com/a/382860.html

相关文章:

  • Qt之快捷键、事件处理、自定义按键——完成记事本项目
  • 【微服务】SpringBoot 整合Kafka 项目实战操作详解
  • spring-kafka消费异常处理
  • 长城杯2025
  • Android BLE 蓝牙扫描完全指南:使用 RxAndroidBle框架
  • CKS-CN 考试知识点分享(3)---Dockerfile 安全最佳实践
  • 新一代控制理论框架:人机环境系统控制论
  • easyPoi实现动表头Excel的导入和导出
  • 【Zephyr电源与功耗专题】13_PMU电源驱动介绍
  • Coze源码分析-资源库-创建知识库-后端源码-应用/领域/数据访问
  • React Server Components (RSC) 与 App Router 简介:Next.js 的未来范式
  • 状态机SMACH相关教程介绍与应用案例分析——机器人操作进阶系列之一
  • Grafana与Prometheus实战
  • godot+c#操作godot-sqlite并加解密
  • Scikit-learn 机器学习:构建、训练与评估预测模型
  • React学习教程,从入门到精通,React 组件核心语法知识点详解(类组件体系)(19)
  • Java分布式编程:RMI机制
  • 5-12 WPS JS宏 Range数组规范性测试
  • MySQL 的安装、启动、连接(Windows、macOS 和 Linux)
  • (附源码)基于Spring Boot的宿舍管理系统设计
  • Mac下Python3安装
  • C++数组与字符串:从基础到实战技巧
  • 第13课:分布式Agent系统
  • Docker 容器化部署核心实战——Nginx 服务配置与正反向代理原理解析
  • 【分享】中小学教材课本 PDF 资源获取指南
  • 如何用 Git Hook 和 CI 流水线为 FastAPI 项目保驾护航?
  • 安卓旋转屏幕后如何防止数据丢失-ViewModel入门
  • STM32_05_时钟树
  • 元宇宙与体育产业:沉浸式体验重构体育全链条生态
  • LeetCode 每日一题 966. 元音拼写检查器