Python有实现堆数据结构的heapq模块,它支持一些基本操作(push,pop)。如何在O(logn)中从堆中删除第i个元素?heapq甚至可以使用,还是我必须使用另一个模块?注意,文档底部有一个示例:http://docs.python.org/library/heapq.html这提出了一种可能的方法——这不是我想要的。我希望删除元素,而不仅仅是标记为已删除。 最佳答案 您可以很容易地从堆中删除第i个元素:h[i]=h[-1]h.pop()heapq.heapify(h)只需将要删除的元素替换为最后一个元素并删除最后一个元素