题目描述
给定一个数组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[] B = new int[A.length];
boolean changed = false;
for(int k = 0; k < B.length; k++){
B[k] = 1;
for(int i = 0; i < A.length; i++){
int temp = 1;
if(i == k){
changed = true;
temp = A[i];
A[i] = 1;
}
B[k] *= A[i];
if(changed){
A[i] =temp;
changed = false;
}
}
}
return B;
}
}
或:
import java.util.ArrayList;
public class Solution {
public int[] multiply(int[] A) {
if(A==null ||A.length<=0)
return A;
int n=A.length;
int[] front=new int[n];
int[] back=new int[n];
front[0]=1;
back[n-1]=1;
for(int i=1;i<n;i++){
front[i]=front[i-1]*A[i-1];
back[n-1-i]=back[n-i]*A[n-i];
}
for(int i=0;i<n;i++){
front[i]*=back[i];
}
return front;
}
}