findKthLargest 方法是用来从一个整数数组中找到第k大的元素的函数。这个方法通常利用数据结构如最小堆(PriorityQueue)来实现高效的查找。
以下是该方法的基本逻辑和步骤:
(1)参数:
nums: 一个整数数组,代表输入的数字序列。
k: 一个整数,表示要找到第k大的元素(注意这里的“第k大”是基于从大到小的排序)。
实现逻辑
(2)初始化最小堆:创建一个PriorityQueue(最小堆)实例,其容量能够动态变化,但初始为空。这里使用的是最小堆,因为在堆中,堆顶元素(最小元素)可以帮助我们快速定位到第k大的元素。
(3)构建堆:
遍历数组nums的每个元素,对于每个元素:如果当前堆的大小小于k,直接将元素添加到堆中。
如果堆的大小已经达到k,并且当前元素大于堆顶元素(即比堆中最小的元素还大),则弹出堆顶元素(最小元素),并将当前元素加入堆中。这样,堆中始终保持k个最大元素,且堆顶元素是这k个元素中最小的一个,即数组中的第k大元素。
(4)返回结果:遍历结束后,堆顶的元素就是我们要找的第k大的元素,直接返回minHeap.peek()即可
示例代码