题目描述
给定一个数组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]。不能使用除法。
pre数组记录number[i]前面的乘积,last[i]记录后面的乘积
package 剑指offer;
public class 构建乘积数组 {
public static int[] multiply(int[] A) {
int[] res=new int[A.length],pre=new int[A.length+1],last=new int[A.length+1];
pre[0]=1;
for(int i=1,tmp=1;i<A.length;tmp*=A[i++]){
pre[i]=tmp;
}
for (int i=A.length-1,tmp=1;i>=0;tmp*=A[i--]){
last[i]=tmp;
}
for(int i=0;i<A.length;i++){
res[i]=pre[i]*last[i];
}
return res;
}
public static void main(String[] args){
int[] num={1,2,3,4,5};
int[] res=multiply(num);
for(int i=0;i<res.length;i++){
System.out.println(res[i]);
}
}
}