题目:
给定一个数组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]。不能使用除法。
思路:
分别从左右两边开始连乘,但是均不乘本位,那么左边的i-1就是i左边数的乘积,i+1就是i右边数的乘积,然后i-1 * i+1 。那么就会得到我们想要的结果。
代码实现:
import java.util.ArrayList;
public class Solution {
public int[] multiply(int[] A) {
if(A==null||A.length==0)
return new int[A.length];
int [] num=new int [A.length];
num[0]=1;
for(int j=1;j<A.length;j++){
num[j]=num[j-1]*A[j-1];
}
int n=1;
for(int z=A.length-1-1;z>=0;z--){
n=n*A[z+1];
num[z]*=n;
}
return num;
}
}