gpt4 book ai didi

python - Python 中的 MinHeap/MaxHeap 实现

转载 作者:太空宇宙 更新时间:2023-11-04 00:21:46 26 4
gpt4 key购买 nike

我在网上搜索了 MinHeap 和 Maxheap 的 Python 实现。

import heapq


class MinHeap:
def __init__(self):
self.heap = []

def push(self, item):
heapq.heappush(self.heap, item)

def pop(self):
return heapq.heappop(self.h)

def __getitem__(self, item):
return self.heap[item]

def __len__(self):
return len(self.h)


class MaxHeap(MinHeap):
def push(self, item):
heapq.heappush(self.heap, Comparator(item))

def pop(self):
return heapq.heappop(self.h)

def __getitem__(self, i):
return self.heap[i].val


class Comparator:
def __init__(self, val):
self.val = val

def __lt__(self, other):
return self.val > self.other

def __eq__(self, other):
return self.val == self.other

def __str__(self):
return str(self.val)

现在我需要为这两个类添加一个 peek 方法。在当前的实现中,我可以弹出并向后推。但我的问题是,有没有更好的方法来做到这一点。 O(1) 时间内的东西。

最佳答案

这些类基于 Python 的 heapq 结构,该结构建立在标准的 Python 列表之上。最小堆中的最小项和最大堆中的最大项位于索引零处。所以就返回

self.heap[0]

如果堆为空,则会导致错误,但这可能正是您想要的。

关于python - Python 中的 MinHeap/MaxHeap 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48856134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com