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

数组除自身以外的乘积算法出错排查(附代码及测试用例)

数组元素乘积问题

问题描述

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

  • nums的任何前缀或后缀的乘积都保证能放入32位整数中。
  • 必须编写时间复杂度为O(n)且不使用除法操作的算法。

示例1:

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

示例2:

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

约束条件:

  • 2 <= nums.length <= 105
  • -30 <= nums[i] <= 30
  • nums的任何前缀或后缀的乘积都保证能放入32位整数中。

**进阶问题:**能否在O(1)额外空间复杂度下解决该问题?(输出数组不计入空间复杂度分析的额外空间。)

错误代码及测试情况

提交的代码

class Solution:
    def productExceptSelf(self, arr: List[int]) -> List[int]:
        
        a=[1 for i in range(len(arr))]
        
        product_left=1
        for i in range(len(arr)):
            a[i] = product_left*a[i-1]
            product_left *= arr[i]
            
        product_right=1
        for i in range(len(arr)-1,-1,-1):
            a[i]*=product_right
            product_right*=arr[i]
        return a

测试对比

  • 测试输入:
[1,2,3,4]
[-1,1,0,-3,3]
  • 实际输出:
[24,12,8,12]
[0,0,-9,0,0]
  • 预期输出:
[24,12,8,6]
[0,0,9,0,0]

问题分析与修正方案

错误原因

  • 左乘积逻辑错误:第一个循环中a[i] = product_left*a[i-1]的写法完全偏离了左乘积的计算目标。正确逻辑是a[i]应该存储nums[0]到nums[i-1]的乘积,初始product_left为1时,i=0的左乘积就是1,之后每一步用当前product_left赋值给a[i],再更新product_left乘以nums[i]。原代码错误地将a[i]与前一个位置的结果相乘,导致左乘积被重复计算。
  • 数值偏差问题:左乘积的错误直接导致后续和右乘积相乘时出现数值错误,比如示例1最后一个元素的结果翻倍,示例2中出现符号错误。

修正后的代码

from typing import List

class Solution:
    def productExceptSelf(self, arr: List[int]) -> List[int]:
        n = len(arr)
        a = [1] * n
        
        # 计算左乘积:a[i] 存储 arr[0..i-1] 的乘积
        product_left = 1
        for i in range(n):
            a[i] = product_left
            product_left *= arr[i]
        
        # 计算右乘积并直接合并到结果数组中
        product_right = 1
        for i in range(n-1, -1, -1):
            a[i] *= product_right
            product_right *= arr[i]
        
        return a

验证说明

  • 输入[1,2,3,4],输出[24,12,8,6],与预期一致。
  • 输入[-1,1,0,-3,3],输出[0,0,9,0,0],与预期一致。
  • 代码仅使用输出数组存储中间结果,未额外开辟其他数组空间,满足进阶问题O(1)额外空间复杂度的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 07:18:19