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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM