LC 速查

HOT 100索引 › B13 堆 Heap

LC 215数组中的第K个最大元素Kth Largest Element in an Array 中等

在无序数组中找出第 k 大的元素(k 从 1 计),无需整体排序。

思路 大小为 k 的小根堆:元素入堆,超过 k 弹最小,堆顶即第 k 大;O(n log k)。亦可用快速选择 O(n)。

class Solution:
    def findKthLargest(self, nums: List[int],
                       k: int) -> int:
        min_hp = []
        for x in nums:
            heappush(min_hp, x)
            if len(min_hp) > k:
                heappop(min_hp)
        return min_hp[0]
← 上一题 柱状图中最大的矩形前 K 个高频元素 下一题 →