算法通关村14关 | 堆在数组中找第k大的元素应用
1. 在数组中找第k大元素
题目
LeetCode215:给定整数数组nums和整数k,请返回数组中第k个最大的元素,

思路
解题思路用三个,选择法,堆查找和快速排序。
我们选择用大堆小堆解决问题,“找最大用小堆,找最小用大堆,找中间用两个堆”,我们构造一个大小只有4的小根堆,为了更好的说明情况,我们扩展一下题目序列[3,2,3,1,2,4,5,1,5,6,2,3]。
堆满了之后,只有大于根节点的元素才能入堆,否则就直接抛弃,元素进入堆中,需要调换位置,满足最小堆的结构,如果发现两个子树都小,则应该和最小的元素交换,如果都一样,则随便选一个。
需要注意:堆不满则直接添加;堆满的时候读到大于根节点的元素才将堆顶拿出,放入新读到的数。

代码
我们用的是Javajdk中的PriorityQueue构建最小堆
/*** 用最小堆在数组中找第k大的元素* @param nums* @param k* @return*/public int findkLargest(int[] nums, int k){if (k > nums.length){return -1;}int len = nums.length;//创建一个含有k个元素的最小堆PriorityQueue<Integer> minHeap = new PriorityQueue<>(k,(a,b) -> (a - b));for (int i = 0; i < k; i++) {minHeap.add(nums[i]);}for (int i = 0; i < len; i++) {Integer topEle = minHeap.peek();//只要比堆顶大的元素,最顶弹出,遍历的元素进去if (nums[i] > topEle){minHeap.poll();minHeap.offer(nums[i]);}}return minHeap.peek();}
相关文章:
算法通关村14关 | 堆在数组中找第k大的元素应用
1. 在数组中找第k大元素 题目 LeetCode215:给定整数数组nums和整数k,请返回数组中第k个最大的元素, 思路 解题思路用三个,选择法,堆查找和快速排序。 我们选择用大堆小堆解决问题,“找最大用小堆ÿ…...
Unity 顶点vertices,uv,与图片贴图,与mesh
mesh就是组成3d物体的三角形们。 mesh由顶点组成的三角形组成,三角形的大小 并不 需要一样,由顶点之间的位置决定。 mesh可以是一个或者多个面。 贴图的原点在左下角,uv是贴图的坐标,数量和顶点数一样(不是100%确定…...
Shell编程之函数
目录 基本概念 自定义函数 系统函数 1.read 2.basename 3.dirname 基本概念 将一段代码组合封装在一起实现某个特定的功能或返回某个特定的值,然后给这段代码取个名字,也就是函数名,在需要实现某个特定功能的时候直接调用函数名即可。 函…...
10.物联网LWIP之TCP状态转变
一。TCP状态机 1.青粗线:理想TCP状态转变(服务器视角下) 2.虚线:被动TCP状态转变(服务器视角下) 3.细实线:不经常出现的TCP状态转变(类似于边界处理) 1.青粗线解释--》服…...
Img标签的src地址自动拼接本地域名(localhost:8080)导致图片不显示问题
摘要:做Vueelement ui项目的时候,发现使用element ui的upload上传图片时,不显示的问题。我项目的图片是上传到七牛云,长传成功后返回存储在七牛云中的地址。后面发现是因为返回的地址是外部地址,需要完整的URL…...
数据结构入门 — 栈
本文属于数据结构专栏文章,适合数据结构入门者学习,涵盖数据结构基础的知识和内容体系,文章在介绍数据结构时会配合上动图演示,方便初学者在学习数据结构时理解和学习,了解数据结构系列专栏点击下方链接。 博客主页&am…...
Unity Android 之 在Unity 中引入 OkHttp的操作注意(OKHttp4.xx- kotlin 的包)简单记录
Unity Android 之 在Unity 中引入 OkHttp的操作注意(OKHttp4.xx- kotlin 的包)简单记录 目录 Unity Android 之 在Unity 中引入 OkHttp的操作注意(OKHttp4.xx- kotlin 的包)简单记录 一、简单介绍 二、OKHttp 4.xx 的 SDK 封装 aar 给 Unity 的使用注意 三、附录 OKHttp 的…...
内嵌功能强大、低功耗STM32WB55CEU7、STM32WB55CGU7 射频微控制器 - MCU, 48-UFQFN
一、概述: STM32WB55xx多协议无线和超低功耗器件内嵌功能强大的超低功耗无线电模块(符合蓝牙 低功耗SIG规范5.0和IEEE 802.15.4-2011标准)。该器件内含专用的Arm Cortex -M0,用于执行所有的底层实时操作。这些器件基于高性能Arm …...
【测试】笔试03
文章目录 1. 哪种测试模型把测试过程作为需求分析、概要设计、详细设计及编码之后的阶段( )2. 在下面所列举的逻辑测试覆盖中,测试覆盖最强的是?3. 网络管理员编写了shell程序prog1.sh,测试时程序死循环无法结束,可以通过下列方式…...
JavaScript的while和for循环
一、循环语句 1.认识循环 在开发中我们经常需要做各种各样的循环操作: 比如把一个列表中的商品、歌曲、视频依次输出进行展示;比如对一个列表进行累加计算;比如运行相同的代码将数字 1 到 10 逐个输出; 循环 是一种重复运行同…...
mqtt安卓客户端
1.MQTT(消息队列遥测传输协议),是一种基于 发布/订阅 (publish/subscribe)模式的"轻量级"通讯协议, 该协议构建于TCP/IP协议上 。MQTT最大优点在于,可以以极少的代码和有限的带宽&…...
pdf怎么删除其中一页?
pdf怎么删除其中一页?现在,pdf文件已经深入影响着我们的工作和学习,如果你是一个上班族,那么几乎每天都会使用到pdf格式的电脑文件。当我们阅读一个页数众多的PDF文件时,可能会发现实际上只需要其中的一小部分内容。很…...
10.Redis 渐进式遍历
Redis 渐进式遍历 渐进式遍历scan 渐进式遍历 keys 命令一次性的把整个redis中所有的key都获取到,keys *但这个操作比较危险,可能会一下子得到太多的key,阻塞 redis 服务器。 通过渐进式遍历,就可以做到,既可以获取到所有的 key&…...
字符函数和字符串函数(2)
目录 memcpy memmove memcmp memcpy void * memcpy ( void * destination, const void * source, size_t num ); 1.函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。 2.这个函数在遇到 \0 的时候并不会停下来。 3.如果source和destination有…...
目录扫描+JS文件中提取URL和子域+403状态绕过+指纹识别(dirsearch_bypass403)
dirsearch_bypass403 在安全测试时,安全测试人员信息收集中时可使用它进行目录枚举,目录进行指纹识别,枚举出来的403状态目录可尝试进行绕过,绕过403有可能获取管理员权限。不影响dirsearch原本功能使用 运行流程 dirsearch进行…...
【UE 材质】常用向量运算节点——点积、叉积、归一化
目录 一、点积 二、叉积 三、归一化 一、点积 点积,也称为内积或数量积,是一种用于计算两个向量之间关系的操作。对于两个三维向量 A(a1,a2,a3)和 B(b1,b2,b3),它们的点积可以用以下公式表示: ABa1⋅…...
音视频 ffmpeg命令提取PCM数据
提取PCM ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -sample_fmt s16 out_s16.wav ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -codec:a pcm_s16le out2_s16le.wav ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f…...
【MySQL】实现可扩展性:构建高性能的系统
什么是可扩展性?可扩展性的好处扩展方式纵向扩展(Scaling Up)横向扩展(Scaling Out) 总结 💯感谢 💖 什么是可扩展性? 可扩展性是指系统能够在需要时轻松地适应更多的工作负载和资源…...
网站用户体验之深度感悟
个性化定制界面和极简版原装界面,哪一个你用起来更加顺手呢,相比之下你更喜欢哪一个? 界面选择: (提醒:仅个人感悟。~~) 方向一:表明自己的喜好 我个人觉得更喜欢个性化定制界面。…...
目标检测YOLO实战应用案例100讲-道路场景下目标检测与分割模型的压缩研究与实现
目录 前言 目标检测方法 语义分割方法 相关理论基础 2.1 YOLO目标检测算法介绍...
别再死记硬背了!用这5个HBase Shell实战场景,轻松搞定日常数据操作
HBase Shell实战手册:5个真实场景解锁高效数据操作 在数据爆炸式增长的时代,HBase作为分布式NoSQL数据库的佼佼者,凭借其高吞吐、低延迟的特性,成为处理海量结构化数据的首选方案。然而,许多开发者虽然掌握了基础命令&…...
从宿舍区隔离到无线网配置:手把手教你用Cisco Packet Tracer实现企业级网络策略
企业级网络隔离与无线接入实战:Cisco Packet Tracer全流程配置指南 在数字化转型浪潮中,网络架构设计已成为企业IT基础设施的核心竞争力。想象这样一个场景:某科技园区需要为研发部门、行政部门和访客区域构建差异化的网络访问策略——研发数…...
6G通信中的HMA天线技术:原理、优势与应用
1. HMA天线技术概述在6G通信和大规模MIMO系统的发展背景下,Huygens Metasurface Antennas(HMA)技术正逐渐成为无线通信领域的研究热点。作为一名长期从事天线系统设计的工程师,我见证了从传统相控阵到现代超表面天线的技术演进历程…...
CANN/asc-devkit协作组shfl函数
shfl 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann/…...
i9-14900K冲击6GHz:极限超频实战与LGA1700接口性能边界探索
1. 项目概述:一次桌面处理器的极限探索最近在折腾一台新机器,核心目标很明确:把一颗英特尔酷睿 i9-14900K 处理器稳定运行在 6GHz 的频率上。这听起来像是一个纯粹的极限超频玩家才会去碰的领域,但实际上,它背后牵扯到…...
避坑指南:在ArcGIS中提取DEM高程点,为什么导入Global Mapper后看不到高度?
避坑指南:ArcGIS与Global Mapper高程数据互操作的核心陷阱与解决方案 当你第一次将精心处理的DEM高程点从ArcGIS导入Global Mapper,期待看到起伏有致的三维地形时,却发现所有点都"躺平"在二维平面上——这种挫败感我深有体会。这不…...
保姆级教程:用PyTorch从零复现YOLOv4(附完整代码与Mosaic数据增强实现)
从零构建YOLOv4:代码级实现与核心模块解析 1. 环境配置与工具准备 在开始复现YOLOv4之前,我们需要搭建一个高效的开发环境。推荐使用Python 3.8和PyTorch 1.7的组合,这是目前最稳定的深度学习开发环境之一。 首先安装必要的依赖库:…...
基于CMS8S6990评估板实现高精度电压电流测量:从血氧仪到通用测量工具的移植实践
1. 项目缘起与核心思路最近终于拿到了中微半导体(CMSemicon)正版的CMS8S6990血氧仪开发板。这块板子给我的第一印象就是“精致”,尺寸不大,但该有的接口和功能一应俱全,颇有点“麻雀虽小,五脏俱全”的味道。…...
国内开通 GPT 会员的自助充值流程记录
国内用户开通 GPT Plus / Pro,比较常见的卡点是支付方式、流程步骤和账号安全。我看了下 cdk.hohy6.com 这个页面,它的流程比较直接:选择套餐,填写 Session Token,支付宝付款,然后系统为自己的 ChatGPT 账号…...
WSL2下CUDA版本切换实战:从CUDA 12.0降级到11.1,成功安装diff-gaussian-rasterization
WSL2环境下CUDA版本切换与diff-gaussian-rasterization安装全指南 在AI和图形学项目的复现过程中,CUDA版本与依赖库的兼容性问题常常成为开发者的"拦路虎"。最近在复现一篇论文时,我遇到了diff-gaussian-rasterization库因CUDA版本不匹配而无…...
