##2.21 只考加法的面试题后续1
用内存换时间可进一步优化上一篇代码3
可以考虑先生成不满足条件的列表,将不满足条件的元素置位,再从这个列表中找出没有置位的元素,该方法时间复杂度可控制在O(n^2)
def func4():
base = 2
lim = 5000
seq = [0] * lim
outseq = []
for i in range(base,lim):
for j in range(lim):
aa = j * i + i * (i - 1) / 2
if aa > lim:
break
else:
if not seq[aa-1]:
seq[aa-1] = aa
for i in range(len(seq)):
if seq[i] == 0:
outseq.append(i + 1)
return outseq
print func4()
本文通过一个具体的面试题目,探讨了如何使用内存换取时间的方法来优化算法效率。介绍了一种预生成不满足条件数列并标记的方法,最终找出符合条件的元素,整体时间复杂度为O(n^2)。
1723

被折叠的 条评论
为什么被折叠?



