构建乘积数组
给定一个数组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]。
不能使用除法。
思考题:
能不能只使用常数空间?(除了输出的数组之外)
样例
输入:[1, 2, 3, 4, 5]
输出:[120, 60, 40, 30, 24]
数学
时间复杂度O(n)
class Solution {
public int[] multiply(int[] A) {
int[] arr = new int[A.length];
for(int i = 0,p = 1;i < A.length;i++){
arr[i] = p;
p *= A[i];
}
for(int i = A.length - 1,p = 1;i >= 0;i--){
arr[i] *= p;
p *= A[i];
}
return arr;
}
}