题目内容
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。
题目思路
这道题目的结果由一个数字的左侧和右侧两个部分构成。所以我们可以先求出左侧和右侧的数组累积乘积,最后合在一起。
程序代码
# -*- coding:utf-8 -*-
class Solution:
def multiply(self, A):
# write code here
lgt=len(A)
if lgt==1:
return [0]
if lgt==2:
return A[::-1]
L=[1 for _ in range(lgt)]
R=[1 for _ in range(lgt)]
for i in range(1,lgt):
L[i]=A[i-1]*L[i-1]
for j in range(lgt-2,-1,-1):
R[j]=A[j+1]*R[j+1]
B=[1 for _ in range(lgt)]
for k in range(lgt):
B[k]=L[k]*R[k]
return B