Python heapq 构造大顶堆

大家都知道Python的​​heapq​​只能构造小顶堆,下面就看看是怎么实现的大顶堆?
堆作为优先队列的常用方法,而且在数据结构和算法方面,经常使用大顶堆和小顶堆进行问题的解决。

导入heapq:

import heapq

注意:默认的堆结构是小顶堆
heapq里没有直接构造大顶堆的方法,可以使用一个很取巧的思路进行解决。
首先我们进行构造堆结构,注意要在每一个元素增加一个-

nums = [2, 5, 1, 6, 9, 0]
heap = []
for num in heap:
   heapq.heappush(heap, -num)
print([-heapq.heappop(heap) for _ in range(len(nums))])

输出:

[9, 6, 5, 2, 1, 0]

这样是不是就将大顶堆输出出来了。
整体思路:负负得正

posted @ 2022-12-10 01:23  BeenHack  阅读(643)  评论(1)    收藏  举报