有这个代码:
a = int(input())
spis = [1]
while len(spis) < a:
b = a - len(spis)
prom = spis[:b]
for i in prom:
spis.append(i*2)
if len(spis) >= a:
break
prom = []
print(max(spis[:a]))
它在长度列表中查找最大数量a,但未通过内存大小测试,如何减少使用的内存量?
使用这种算法,甚至无法形成列表,也无法搜索最大值。可以计算:它等于
2**int(math.log2(a))。这个问题可以这样解决: