findKthLargest方法

findKthLargest 方法是用来从一个整数数组中找到第k大的元素的函数。这个方法通常利用数据结构如最小堆(PriorityQueue)来实现高效的查找。

以下是该方法的基本逻辑和步骤:

bfd9f95cf9874e6eb3942225c3f2d299.png

(1)参数:

nums: 一个整数数组,代表输入的数字序列。

k: 一个整数,表示要找到第k大的元素(注意这里的“第k大”是基于从大到小的排序)。

实现逻辑

(2)初始化最小堆:创建一个PriorityQueue(最小堆)实例,其容量能够动态变化,但初始为空。这里使用的是最小堆,因为在堆中,堆顶元素(最小元素)可以帮助我们快速定位到第k大的元素。

(3)构建堆:

遍历数组nums的每个元素,对于每个元素:如果当前堆的大小小于k,直接将元素添加到堆中。

如果堆的大小已经达到k,并且当前元素大于堆顶元素(即比堆中最小的元素还大),则弹出堆顶元素(最小元素),并将当前元素加入堆中。这样,堆中始终保持k个最大元素,且堆顶元素是这k个元素中最小的一个,即数组中的第k大元素。

(4)返回结果:遍历结束后,堆顶的元素就是我们要找的第k大的元素,直接返回minHeap.peek()即可

 

示例代码cb99096991594bada0468494f2ebe886.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值