python3 堆相關函式的使用

靖意风發表於2024-10-29

215. 陣列中的第K個最大元素

class Solution:
    def findKthLargest(self, nums: List[int], k: int) -> int:
        ans = []
        for i in range(k):
            heapq.heappush(ans, nums[i])

        for i in range(k, len(nums)):
            if nums[i] > ans[0]:
                heapq.heappop(ans)
                heapq.heappush(ans, nums[i])

        return ans[0]

import heapq

heapq.heapify(nums) # 對nums[] 進行建堆操作,是小頂堆

heapq.heappush(ans, val) 將val 加入到ans這個堆中,val 和 父節點比較,找到對應的位置

val = heapq.heappop(ans) 彈出棧頂,按理說 之後的棧頂仍會保留其餘數值的最小值

相關文章