题目
给定一个数组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]。不能使用除法。
方法
参考:https://www.cnblogs.com/yongh/p/9971936.html
时间复杂度:2n
思路
画出矩阵,分析数组B每个元素的乘积元素组成,如下图所示
所以,我们可以使用一个循环,迭代计算A0到An-2的乘积,每乘一个数,就对应乘到B数组相应的位置,计算上图的左下部分
再使用一个循环,迭代计算An-1到A1的乘积,一样每乘一个数,要对应乘到B数组相应的位置,计算上图的右上部分
代码
1 | function multiply(array) { |