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

Java不使用嵌套循环实现List除自身外元素乘积功能

除自身外数组元素乘积的无嵌套循环实现方案

核心逻辑

输出数组第i位的值等于输入数组中除第i位外所有元素的乘积,示例如下:

输入示例:inputList = [1, 2, 3, 4]
预期输出:outputList = [24, 12, 8, 6]

实现思路

通过两次单向遍历分别计算每个位置的左侧乘积和右侧乘积,对应位置相乘即可得到结果,全程仅使用独立单层循环,无嵌套结构:

  • 第一次从左到右遍历,计算每个位置左侧所有元素的乘积,存入结果数组对应位置
  • 第二次从右到左遍历,计算每个位置右侧所有元素的乘积,和结果数组中已存储的左侧乘积相乘,直接得到最终结果
  • 不需要额外存储左右乘积数组,直接在结果数组上迭代计算即可,额外空间开销为常数级

代码实现(Python)

def product_except_self(nums):
    length = len(nums)
    result = [1] * length
    # 计算左侧乘积
    left_temp = 1
    for i in range(length):
        result[i] = left_temp
        left_temp *= nums[i]
    # 计算右侧乘积并合并得到最终结果
    right_temp = 1
    for i in range(length - 1, -1, -1):
        result[i] *= right_temp
        right_temp *= nums[i]
    return result

# 测试示例
input_list = [1, 2, 3, 4]
print(product_except_self(input_list)) # 输出 [24, 12, 8, 6]

方案优势

  • 时间复杂度为O(n),仅需两次遍历数组,性能远高于嵌套循环的O(n²)实现
  • 未使用除法运算,即使输入数组存在0元素也可以正确计算,不会触发除零异常
  • 空间开销低,仅需两个临时变量存储乘积值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:45:06