238. 除自身以外数组的乘积
可阿奇 2024/4/18 算法
题目链接:238. 除自身以外数组的乘积 (opens new window)
思路是两次遍历,顺序遍历用一个数组记录索引i之前的乘积,这个数组也是我们最终要返回的结果,然后逆序遍历,用一个temp变量记录后边的乘积,与之前的数组相乘。这题还有一个知识点,把数组全部初始化为0,用Arrays.fill()。代码如下:
class Solution {
public int[] productExceptSelf(int[] nums) {
int[] res = new int[nums.length];//res[i]即是我们所求的nums 中除 nums[i] 之外其余各元素的乘积
Arrays.fill(res, 1);//数组所有元素初始化为1
for (int i = 1; i < nums.length; i++) {
res[i] = res[i - 1] * nums[i - 1];//先乘了i以前的乘积
}
int temp = 1;
for (int j = nums.length - 2; j >= 0; j--) {
temp = temp * nums[j + 1];//j的后边几项乘积
res[j] = res[j] * temp;
}
return res;
}
}