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]
这样是不是就将大顶堆输出出来了。
整体思路:负负得正。

浙公网安备 33010602011771号