Python3 小顶堆heapq

heapq只有小顶堆,大顶需要自己取相反数操作...

leetcode414

from heapq import *

class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        if len(nums)==1:
            return nums[0]
        elif len(nums)==2:
            return max(nums[0],nums[1])
        else:
            hp=[nums[0],nums[1],nums[2]]
            heapify(hp) #把一个list转成有堆结构的list,它还是个list
            i=3
            ll=len(nums)
            while i<ll:
                heappush(hp,nums[i])
                heappop(hp)
                i+=1
            return heappop(hp)

 

posted @ 2021-10-06 14:10  Kinghao0319  阅读(92)  评论(0)    收藏  举报