参考: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