给你一个整数数组
nums,返回 数组answer,其中answer[i]等于nums中除了nums[i]之外其余各元素的乘积 。题目数据 保证 数组
nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法, 且在
O(n)时间复杂度内完成此题。
由于题目规定不能使用除法,且时间复杂度为On,所以需要从左右边累乘积,初始化为1,然后左边从1开始,右边从n-1开始,注意必须先*right,然后再更新res[i].
python
class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
length = len(nums)
res = [1] * length
for i in range(1, length):
res[i] = res[i - 1] * nums[i - 1]
right = 1
for i in range(length - 1, -1, -1):
res[i] = res[i] * right
right = nums[i] * right
return res