我们不必将所有数字的乘积除以给定索引处的数字得到相应的答案,而是利用索引左侧所有数字的乘积和右侧所有数字的乘积(即前缀与后缀)相乘得到答案。
对于给定索引 i,我们将使用它左边所有数字的乘积乘以右边所有数字的乘积。
用一个遍历来跟踪右边元素的乘积,
class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
length = len(nums)
answer = [0] * length
answer[0] = 1
for i in range(1,length):
answer[i] = nums[i-1] * answer[i-1]
numR = 1
for k in reversed(range(length)):
answer[k] = answer[k] * numR
numR *= nums[k]
return answer