构建乘积数组
题目描述
给定一个数组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]。不能使用除法。
public int[] multiply(int[] arr) {
}分析
规律题:

public int[] multiply(int[] arr) {
if(arr == null || arr.length == 0){
return arr;
}
int len = arr.length;
int[] arr1 = new int[len], arr2 = new int[len];
arr1[0] = 1;
arr2[len - 1] = 1;
for(int i = 1 ; i < len ; i++){
arr1[i] = arr1[i - 1] * arr[i - 1];
arr2[len - 1 - i] = arr2[len - i] * arr[len - i];
}
int[] res = new int[len];
for(int i = 0 ; i < len ; i++){
res[i] = arr1[i] * arr2[i];
}
return res;
}出自:http://www.zhenganwen.top
已获授权
本文详细解析了一种不使用除法构建乘积数组的算法,通过两遍扫描实现,避免了大数溢出的问题,适用于数组乘积的计算场景。
250

被折叠的 条评论
为什么被折叠?



