自己想的就差一点点,好可惜!!
正着走一遍,每一格里面存的是,从0到这一位之前的数连乘结果。
再反着走一遍,用各自里本身的值,乘以从后往前除它之外的连乘结果,然后更新连乘的结果
1 public int[] productExceptSelf(int[] nums) { 2 int len = nums.length; 3 int[] res = new int[len]; 4 res[0] = 1; 5 for(int i = 1; i < len; i++) { 6 res[i] = nums[i-1] * res[i-1]; 7 } 8 int right = nums[len-1]; 9 for(int i = len - 2; i >= 0; i--) {10 res[i] *= right;11 right *= nums[i];12 }13 return res;14 }