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

求解除自身外数组元素乘积时遇List assignment index out of range错误求助

解决“除自身以外数组的乘积”问题及代码错误修复

问题描述

给定整数数组nums,返回一个answer数组,其中answer[i]等于nums中除nums[i]之外所有元素的乘积。

示例1:
输入:nums = [1,2,3,4]
输出:[24,12,8,6]

示例2:
输入:nums = [-1,1,0,-3,3]
输出:[0,0,9,0,0]

你的代码错误分析

  1. 索引越界错误原因:你初始化的array是空列表,array[j]=mul试图给不存在的索引位置赋值,这直接触发了list assignment index out of range错误。
  2. 算法逻辑缺陷:
    • 用总乘积除以当前元素的思路不成立,当数组包含0时会触发除以0的运行时错误(比如示例2的场景);
    • 你的循环逻辑错误,mul=m/i在每次循环中都会被覆盖,最终mul仅等于总乘积除以最后一个元素的值,无法生成每个位置对应的正确结果。

正确实现方案

方案1:左右乘积数组(直观易理解)

通过分别计算每个元素左侧、右侧所有元素的乘积,再将两者相乘得到最终结果:

def product_except_self(nums):
    n = len(nums)
    left_products = [1] * n
    right_products = [1] * n
    result = [1] * n

    # 计算每个元素左侧的乘积
    for i in range(1, n):
        left_products[i] = left_products[i-1] * nums[i-1]

    # 计算每个元素右侧的乘积
    for i in range(n-2, -1, -1):
        right_products[i] = right_products[i+1] * nums[i+1]

    # 左右乘积相乘得到结果
    for i in range(n):
        result[i] = left_products[i] * right_products[i]

    return result

# 保留你的输入函数
def inputArray():
    lst = []
    n = int(input("Enter number of elements : "))
    for _ in range(n):
        ele = int(input())
        lst.append(ele)
    print(lst)
    return lst

# 运行测试
nums = inputArray()
print(product_except_self(nums))

方案2:空间优化版(O(1)额外空间)

直接在结果数组上先计算左侧乘积,再反向遍历计算右侧乘积并更新结果,无需额外的左右乘积数组:

def product_except_self(nums):
    n = len(nums)
    result = [1] * n

    # 先计算左侧乘积存入result
    for i in range(1, n):
        result[i] = result[i-1] * nums[i-1]

    # 反向遍历,计算右侧乘积并直接更新结果
    right_product = 1
    for i in range(n-1, -1, -1):
        result[i] *= right_product
        right_product *= nums[i]

    return result

# 输入函数不变
def inputArray():
    lst = []
    n = int(input("Enter number of elements : "))
    for _ in range(n):
        ele = int(input())
        lst.append(ele)
    print(lst)
    return lst

nums = inputArray()
print(product_except_self(nums))

内容的提问来源于stack exchange,提问作者Unai Granados Ormaetxea

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:16:04