所以这是我的min-heap代码。这是我作业的一部分:
def heapify(i):
global end,a
l=2*i+1
if l>end:
return None
r=2*i+2
minarg=i
if a[i]>a[l]:
minarg=l
if r<=end:
if a[minarg]>a[r]: minarg=r
if a[i]==a[minarg]:
return None
else:
a[i],a[minarg]=a[minarg], a[i]
heapify(minarg)
def buildHeap(start):
global end,a
if start*2+1>end:
return None
buildHeap(start*2+1)
buildHeap(start*2+2)
heapify(start)
应该可以正常工作,但是对于大型测试用例,我的时间限制已超出限制。我做错了吗?
答案 0 :(得分:0)
Python中的函数调用需要时间,递归占用空间。
要保存递归的时间,通常会将其转换为循环。这通常需要使用日期的专门“内存管理”来处理安全空间。你已经使用数组/列表(使用... ehem ...全局变量)完成了这项工作。
如果这是你的功课,请继续 - 可行,但不重要。