题目
给你一个整数数组
nums
,返回 数组answer
,其中answer[i]
等于nums
中除nums[i]
之外其余各元素的乘积 。题目数据 保证 数组
nums
之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法,且在
O(n)
时间复杂度内完成此题。
解题
"""
这个算法的时间复杂度为 O(n),空间复杂度为 O(1)(不计入输出数组的空间)。
"""
def product_except_self(nums):
n = len(nums)
answer = [1] * n
# 计算前缀乘积
prefix = 1
for i in range(n):
answer[i] = prefix
prefix *= nums[i]
# 计算后缀乘积并更新答案数组
suffix = 1
for i in range(n - 1, -1, -1):
answer[i] *= suffix
suffix *= nums[i]
return answer
nums = [1, 2, 3, 4]
print(product_except_self(nums)) # 输出: [24, 12, 8, 6]