如何优化返回第N个偶数的列表推导式,是否需要预存偶数序列?
问题分析与优化方案
现有代码问题
- 你当前的实现通过生成列表筛选偶数,时间复杂度为O(n),空间复杂度也为O(n),当n数值极大时会占用大量内存和运算时间,自然会触发超时。
- 完全不需要用列表/字典预存偶数序列,这类有明确数学规律的序列可以直接通过公式计算得到结果,效率可以达到*O(1)*常数级。
实现逻辑
偶数从0开始的序列规律非常明确:
第N个偶数 = 2 * (N - 1)
验证测试用例:
- 输入
1:2*(1-1) = 0,符合预期 - 输入
3:2*(3-1) =4,符合预期 - 输入
100:2*(100-1)=198,符合预期 - 输入
1298734:2*(1298734-1)=2597466,符合预期
优化后代码
def nth_even(n): return 2 * (n - 1)
内容的提问来源于stack exchange,提问作者Brisco
相关产品推荐
相关产品推荐

