Python栈的应用:找到数组中第K大的元素
我们可以使用一个大小为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。
相关文章