题目描述
给定一个数组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]。不能使用除法。
题目分析:
由left[i]=A[0]A[1]…*A[i-1]得
left[i]=left[i-1]A[i-1];
同理
由right[i]=A[i+1]…*A[n-1]得
right[i]=right[i+1]*A[i+1]
dp的思想。
import java.util.ArrayList;
public class Solution {
public int[] multiply(int[] A) {
int length=A.length;
if(A==null||A.length<=0){
return A;
}
int B[]=new int[length];
int left[]=new int[length];
int right[]=new int[length];
left[0]=1;
right[length-1]=1;
for(int i=1;i<length;i++){
left[i]=left[i-1]*A[i-1];
}
for(int j=length-2;j>=0;j--){
right[j]=right[j+1]*A[j+1];
}
for(int i=0;i<length;i++){
B[i]=left[i]*right[i];
}
return B;
}
}