文章预览
在算法面试中,堆(Heap)是一种常见而重要的数据结构,无论是处理TopK问题、合并有序列表还是实现优先队列,都少不了它的身影。Python的标准库中就藏着一个处理堆操作的神器—— heapq ,今天就带大家彻底玩转这个库! 一、什么是堆(Heap)?为什么要用它? 很多同学一听到"堆"这个词就头大,觉得很复杂。其实,堆就是一种特殊的树结构,具体来说是一种完全二叉树。根据性质的不同,堆可以分为两种: 最小堆(Min Heap) :父节点的值总是小于或等于子节点的值 最大堆(Max Heap) :父节点的值总是大于或等于子节点的值 Python的 heapq 库默认实现的是最小堆,也就是说,每次弹出的都是堆中最小的元素。 那么,为什么要用堆呢?主要原因是堆的操作效率高: 查找最小(或最大)元素:O(1) 插入元素:O(log n) 删除最小(或最大)元素:O(log n) 如
………………………………