Python栈的应用:找到数组中第K大的元素

2023-04-10 00:00:00 元素 找到 组中

我们可以使用一个大小为K的最小堆来解决这个问题。首先,我们将数组前K个元素插入堆中。然后,我们遍历剩余的元素,如果它比堆顶元素大,我们就删除堆顶元素,并将它插入堆中。最后,堆顶元素就是第K大的元素。

下面是Python代码实现:

import heapq

def find_kth_largest(nums, k):
    heap = nums[:k]
    heapq.heapify(heap)
    for num in nums[k:]:
        if num > heap[0]:
            heapq.heappop(heap)
            heapq.heappush(heap, num)
    return heap[0]

# 示例
nums = [3, 2, 1, 5, 6, 4]
k = 2
print(find_kth_largest(nums, k)) # 输出5

在此示例中,数组nums中第2大的元素是5,因此调用find_kth_largest(nums, 2)将返回5。

相关文章