给定一个数组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]。不能使用除法。
基本思想:分两段算。构建一个矩阵,主对角线上全是1,B[i]即为矩阵第i行所有元素的乘积。
# -*- coding:utf-8 -*-
class Solution:
def multiply(self, A):
# write code here
B = []
B.append(1)
for i in range(1, len(A)):
B.append(B[i - 1] * A[i - 1])
temp = 1
for j in range(len(A) - 2, -1, -1):
temp *= A[j + 1]
B[j] *= temp
return B
本文介绍了一种不使用除法构建特殊乘积数组的方法。通过两阶段计算,首先从前向后构建部分乘积,然后从后向前计算剩余的乘积,并最终得到所需的B数组。
1907

被折叠的 条评论
为什么被折叠?



