题目
思路
left[i]表示以i为中心,左边的乘积结果(前缀积)
right[i]表示以i为中心,右边的乘积结果(后缀积)
left[i] * right[i]就是除去i外,其余各元素的乘积。
代码
class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
n = len(nums)
left = [None]*n
left[0] = 1
right = [None]*n
right[-1] = 1
# left
for i, num in enumerate(nums[:n-1], start=1):
left[i] = left[i-1] * num
# right
for i in range(n-1, 0, -1):
right[i-1] = right[i]*nums[i]
# left * right
ans = list(map(lambda x: x[0]*x[1], zip(left, right)))
return ans