Python heapq 构造大顶堆

参考:https://blog.csdn.net/baidu_27643275/article/details/88878612

heapq模块可以接受元组对象,默认元组的第一个元素作为priority,即按照元组的第一个元素构成 小根堆,若第一个元素是原先的负数,则可以利用元组构造大顶堆,符合一般的升序需求

heappush( Q , tuple )

利用元组构建 大顶堆

from heapq import *

def FindMaxProfit(profits, key=lambda x: -x):
    maxHeap1 = []
    for i in range(len(profits)):
        heappush(maxHeap1, (-profits[i], profits[i])) # 大顶堆
        # heappush(maxHeap1, profits[i])  # 默认小顶堆
    return heappop(maxHeap1)

# for test
profits = [3, 2, 4, 9]
print(FindMaxProfit(profits))  # (-9, 9) 最大值是元组的第二个元素 9
posted @ 2022-04-04 16:07  麦克斯的园丁  阅读(862)  评论(0编辑  收藏  举报