根据题目描述,如果可以使用除法,就很简单。但是要求不能使用。
假设:
left[i] = A[0]*...*A[i-1]
right[i] = A[i+1]*...*A[n-1]
所以:
B[i] = left[i] * right[i]
很自然得想到用res1和res2两个来分别保存left[i]的集合和right[i]的集合,最后再B[i] = res1[i] * res2[i] 即可
class Solution:
def multiply(self, A):
# write code here
if len(A) == 0: return None
B = []
res1 = [1]
res2 = [1]
n = len(A)
for i in range(1, n):
res1.append(res1[i-1] * A[i-1])
res2.append(res2[i-1] * A[n-i])
res2 = res2[::-1]
for i in range(len(A)):
B.append(res1[i] * res2[i])
return B
def multiply(self, A):
# write code here
if len(A) == 0: return None
B = []
res1 = [1]
res2 = [1]
n = len(A)
for i in range(1, n):
res1.append(res1[i-1] * A[i-1])
res2.append(res2[i-1] * A[n-i])
res2 = res2[::-1]
for i in range(len(A)):
B.append(res1[i] * res2[i])
return B