Python的堆,优先队列实现非常方便,使用heapq模块就可以了
基本的api:
ans = []
heapq.heapqpush(ans,1)
这段代码把ans看作一个小顶堆,把1push进这个堆里面
要是想取这个堆的最小值(小顶堆嘛),直接取ans[0] 就行了
heapq.heappop(ans)
取堆顶返回而且弹出堆顶
基本操作就这么几个
但是如果想实现一个大顶堆怎么办?
把在数据进堆的时候把所有数据都去相反数就可以啦!
Python的堆,优先队列实现非常方便,使用heapq模块就可以了
基本的api:
ans = []
heapq.heapqpush(ans,1)
这段代码把ans看作一个小顶堆,把1push进这个堆里面
要是想取这个堆的最小值(小顶堆嘛),直接取ans[0] 就行了
heapq.heappop(ans)
基本操作就这么几个
但是如果想实现一个大顶堆怎么办?
把在数据进堆的时候把所有数据都去相反数就可以啦!