import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param milk_amount int整型一维数组
* @return int整型一维数组
*/
public int[] product_except_self (int[] milk_amount) {
// write code here
int n = milk_amount.length;
int[] ans = new int[n];
ans[0] = 1;
for (int i = 1; i < n; i++) {
ans[i] = milk_amount[i - 1] * ans[i - 1];
}
int R = 1;
for (int j = n - 1; j >= 0; j--) {
ans[j] *= R;
R *= milk_amount[j];
}
return ans;
}
}
编程语言是Java。
该题考察的知识点是数组操作和数学计算。
代码的文字解释如下:
- 初始化一个长度为
n的整型数组ans用于保存结果,其中n为输入数组的长度。 - 遍历一次输入数组,计算当前元素左侧所有元素的乘积,并将结果保存到
ans数组中。具体做法是,从索引1开始,将ans[i]的值设置为milk_amount[i-1]与ans[i-1]的乘积。 - 定义一个变量
R初始化为1,用于保存当前元素右侧所有元素的乘积。 - 从数组的右侧开始遍历,将每个位置
j的元素值乘以R,并将结果保存到ans数组的相应位置j上。然后,更新变量R为R乘以当前位置j的元素值milk_amount[j]。 - 循环结束后,将
ans数组作为结果返回。

京公网安备 11010502036488号