You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode除自身以外数组的乘积问题:Python代码中第二个for循环未执行的问题求助

问题排查与修复

嘿,我一眼就看到问题出在哪儿了——你的第二个for循环的range参数写错啦!

为什么第二个循环没执行?

Python里range(a, b)的默认步长是正1,当起始值a大于结束值b时,这个区间是空的,循环自然不会触发。你写的range(n-1, -1),这里n=4,也就是range(3, -1),起始值3比结束值-1大,步长又是正的,根本不会进入循环体。

要实现从后往前遍历数组,你需要给range加上第三个参数:步长-1,也就是写成range(n-1, -1, -1),这样才会从索引3开始,依次走到2、1、0,最后停在-1(不包含该值)。

修正后的完整代码

nums = [0,5,4,12]
n = len(nums)
temp = 1
ans = []
# 计算前缀乘积:ans[i] 存储 nums[0..i-1] 的乘积
for i in range(n):
    ans.append(temp)
    temp *= nums[i]

temp = 1
# 从后往前遍历,乘上后缀乘积:nums[i+1..n-1] 的乘积
for i in range(n-1, -1, -1):
    ans[i] *= temp
    temp *= nums[i]

print("yes")
print(ans)  # 输出结果:[240, 0, 0, 0]

逻辑验证

  1. 第一个循环结束后,ans为[1, 0, 0, 0],对应每个位置的前缀乘积
  2. 第二个循环从后往前遍历:
    • i=3: ans[3] = 0 * 1 = 0,temp更新为1*12=12
    • i=2: ans[2] = 0 *12=0,temp更新为12*4=48
    • i=1: ans[1] =0 *48=0,temp更新为48*5=240
    • i=0: ans[0] =1 *240=240,temp更新为240*0=0
  3. 最终结果完全符合题目要求:每个位置的值都是除自身外所有元素的乘积

内容的提问来源于stack exchange,提问作者Hari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 13:42:47