非独立思考
class Solution {public int[] productExceptSelf(int[] nums) {// 左右乘积,2个数组,分别存放左积数和右积数// 左积数L[i]是指当前数字左边所有数字的和,L[0]默认为1// 右积数R[i]是指当前数字右边所有数字的和,R[0]默认为1// 那么L[i]*R[i]就是所求的:除了自身以外数组的乘积int[] L = new int[nums.length];int[] R = new int[nums.length];L[0] = 1;R[R.length - 1] = 1;// 从左边开始循环for (int i = 1; i < L.length; i++) {L[i] = L[i - 1] * nums[i - 1];}// 从右边开始循环for (int i = R.length - 2; i >= 0; i--) {R[i] = R[i + 1] * nums[i + 1];}// 循环相乘for (int i = 0; i < L.length; i++) {nums[i] = L[i] * R[i];}return nums;}}
