除了自身以外数组的乘积
2026年3月19日小于 1 分钟
除了自身以外数组的乘积
使用的方法
无
解题思路
- 创建两个数组
L和R,分别用于存储每个元素左侧和右侧的乘积。 - 遍历输入数组
nums,对于每个元素nums[i],计算其左侧的乘积L[i]和右侧的乘积R[i]。 - 最后,创建一个新的数组
ans,对于每个元素nums[i],将其对应的左侧乘积L[i]和右侧乘积R[i]相乘,得到最终的结果ans[i]。
代码实现
class Solution {
public int[] productExceptSelf(int[] nums) {
int n = nums.length;
int[] L = new int[n];
int[] R = new int[n];
int[] ans = new int[n];
L[0] = 1; // 第一个元素左侧没有元素,乘积为1
for(int i=1;i<n;i++){
L[i] = nums[i-1] * L[i-1];
}
R[n-1] = 1; // 最后一个元素右侧没有元素,乘积为1
for(int i=n-2;i>=0;i--){
R[i] = nums[i+1] * R[i+1];
}
for(int i=0;i<n;i++){
ans[i] = L[i] * R[i];
}
return ans;
}
}