public class Test7 {
// 输入: 一个长度为n的整数数组input
// 输出: 一个长度为n的数组result,满足result[i] = input数组中,除了input[i] 之外的所有数的乘积,不用考虑溢出
// 不能使用除法
// 例如 input {2, 3, 4, 5} output: {60, 40, 30, 24}
public static void main(String[] args) {
int[] input = {2, 3, 4, 5};
int[] result =mulArr(input);
for(int i : result){
System.out.println(i);
}
}
//记录该位置之前所有数的乘积,与该位置之后所有数的乘积相乘,即是结果
public static int[] mulArr(int[] input) {
int size = input.length;
if (size == 0) return new int[0];
int[] result = new int[size];
result[0] = 1;
for (int i = 1; i < size; i++) {
result[i] = result[i - 1] * input[i - 1];
}
int temp = 1;
for (int i = size - 2; i >= 0; i--) {
temp = temp * input[i + 1];
result[i] = result[i] * temp;
}
return result;
}
}
【算法题】求数组除当前位其他数的乘积
于 2022-01-21 16:54:14 首次发布