python3 堆相关函数的使用

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)  弹出栈顶,按理说 之后的栈顶仍会保留其余数值的最小值

posted @ 2024-10-29 16:10  靖意风  Views(2)  Comments(0Edit  收藏  举报