题目描述
给定一个数组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]。不能使用除法。
解题思路:
双重循环。
class Solution:
def multiply(self, A):
# write code here
B =[]
L = len(A)
for i in range(L):
temp = 1
for j in range(L):
if i != j:
temp*=A[j]
B.append(temp)
return B
解题思路2:
如图:
我们可以先计算下三角,这是B的一部分。分析可以看出相当于B[i]=B[i-1]*A[i-1].
然后再计算上三角,每次的乘数也是多乘一个A[i+1].
代码如下所示。
class Solution:
def multiply(self, A):
if not A: return A
B = [1]
for i in range(1,len(A)):
print(i)
B.append( B[i-1]*A[i-1])
temp = 1
for i in range(len(A)-2,-1,-1):
temp*=A[i+1]
B[i]*=temp
return B