本文共 678 字,大约阅读时间需要 2 分钟。
给定一个数组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]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)
构建一个数组,此数组的每个位置上的元素是由原数组相同位置i之前的所有元素相乘得来的。B[i]的值可以看作下图的矩阵中每行的乘积。下三角用连乘可以很容求得,上三角,从下向上也是连乘。因此先算下三角中的连乘,即我们先算出B[i]中的一部分,然后倒过来按上三角中的分布规律,把另一部分也乘进去。
import java.util.ArrayList;public class Solution { public int[] multiply(int[] A) { int length=A.length; int[] B=new int[length]; if(length!=0){ B[0]=1; //计算下三角连乘 for(int i=1;i=0;j--){ t*=A[j+1]; B[j]*=t; } } return B; }}
转载地址:http://mdlzi.baihongyu.com/