根据题目描述,如果可以使用除法,就很简单。但是要求不能使用。

假设:
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