给定一个数组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]。不能使用除法。
package arraylistdemo;
/**
* @author wyl
* @time 2018年8月22日下午1:50:00
*
* 动态规划
* 使用两个数组B,C 分别记录左边的乘积和右边的乘积
*/
public class Solution2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] A={1,2,3,4};
int[] result=multiply(A);
for(int res:result){
System.out.print(res+" ");
}
}
private static int[] multiply(int[] A) {
// TODO Auto-generated method stub
int[] res=new int[A.length];
int[] B=new int[A.length];//记录左边乘积
int[] C=new int[A.length];//记录右边乘积
B[0]=1;
for(int j=1;j<A.length;j++){
B[j]=B[j-1]*A[j-1];
}
C[A.length-1]=1;
for(int k=A.length-2;k>=0;k--){
C[k]=C[k+1]*A[k+1];
}
for(int i=0;i<A.length;i++){
res[i]=B[i]*C[i];
}
return res;
}
}
DEMO
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[n-1]。不能使用除法。
package arraylistdemo;
/**
* @author wyl
* @time 2018年8月22日下午1:50:00
*/
public class Solution1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] A={1,2,3,4};
int[] result=multiply(A);
for(int res:result){
System.out.print(res+" ");
}
}
private static int[] multiply(int[] A) {
// TODO Auto-generated method stub
int[] res=new int[A.length];
if (A.length!=0) {
res[0]=A[0];
for(int i=1;i<A.length;i++){
res[i]=res[i-1]*A[i];
}
}
return res;
}
}