题目描述
给定一个数组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]。不能使用除法。
源代码:
import java.util.ArrayList;
public class Solution {
public int[] multiply(int[] A) {
int len=A.length;
int [] arr=new int[len];
arr[0] = 1;
for(int i=1;i<len;i++){
arr[i] = arr[i-1]*A[i-1];
}
/*
arr[0] = 1;
arr[1] = arr[0] *A[0]= A[0];
arr[2] = arr[1] *A[1]= A[0] *A[1];
arr[3] = arr[2] *A[2]= A[0] *A[1]*A[2]
arr[4] = arr[3] *A[3]= A[0] *A[1]*A[2]*A[3]
arr[5] = arr[4] *A[4]= A[0] *A[1]*A[2]*A[3]*A[4]......................
arr[len-1] = arr[len-2] *A[len-2]= A[0] *A[1]*A[2]*A[3]*A[4]*.............*A[len-3]*A[len-2]
*/
int tmp=1;
for(int i=len-1;i>=0;i--){
arr[i] = arr[i]*tmp;
tmp=tmp*A[i];
}
/*
tmp=1
arr[len-1]=arr[len-1] *tmp=A[0] *A[1]*A[2]*A[3]*A[4]*.............*A[len-3]*A[len-2]*1=A[0] *A[1]*A[2]*A[3]*A[4]*.............*A[len-3]*A[len-2]
tmp=1*A[len-1]
arr[len-2]=arr[len-2] *tmp= A[0] *A[1]*A[2]*A[3]*A[4]*.............*A[len-3]*A[len-1]
tmp= A[len-1]*A[len-2]
arr[len-3]=arr[len-3] *tmp= A[0] *A[1]*A[2]*A[3]*A[4]*.............*A[len-4]*A[len-2]*A[len-1]
tmp= A[len-1]*A[len-2]*A[len-3]
arr[1] = A[0] *A[2]*A[3]*A[4]*.............*A[len-4]*A[len-2]*A[len-1]
tmp= A[len-1]*A[len-2]*A[len-3]*...................*A[1]
arr[0] = arr[0]*tmp = arr[0]*A[len-1]*A[len-2]*A[len-3]*...................*A[1] = A[len-1]*A[len-2]*A[len-3]*...................*A[1]
*/
return arr;
}
}