死循环导致
不一定是因为自己显式地创建的变量过多,比如创建过多的列表,字典等等。
可能是死循环,自己写循环没有使得循环出口的关键变量在循环过程中变化,
循环在跑,内存一直增加,导致超出内存限制。
比如下面的求某一个数的因子,初始化因子fac为1,
每次循环,fac理应要自增1,但是忘了写,
就会报错说内存超限,
它没报TLE,所以就很难发觉。
def get_fac(self, target):
if target == 1:
return []
fac = 1
facs = []
while fac*fac <= target:
if target % fac == 0: # in O(N)
facs.append(fac) # list index O(N)
if fac != 1 and fac*fac != target:
facs.append(target//fac)
# fac += 1 # 这里忘了写
return facs
列表导致
可能是列表占内存很大,换成字典后就可以了,这种情况仅适用于可以用字典代替的情况。