238. 除自身以外数组的乘积
解题思路
- 前缀与后缀的思路
- 对于给定索引i,将它左边的所有数字乘积乘以右边所有数字的乘积
- 初始化两个数组L R
- 计算L[i] = L[i - 1] * nums[i - 1] 也就是左侧所有数字的乘积
- 计算R[i] = R[i + 1] * nums[i + 1] 也就是右侧所有数字的成绩
- 计算L[I] * R[i]
class Solution {public int[] productExceptSelf(int[] nums) {int[] L = new int[nums.length];int[] R = new int[nums.length];int[] ans = new int[nums.length];L[0] = 1;for(int i = 1; i < nums.length; i++){L[i] = L[i - 1] * nums[i - 1];}R[nums.length - 1] = 1;for(int j = nums.length - 2; j >= 0; j--){R[j] = R[j + 1] * nums[j + 1];}for(int k = 0; k < nums.length; k++){ans[k] = L[k] * R[k];}return ans;}
}