Product of Array Except Self (Medium)
given [1,2,3,4], return [24,12,8,6].Basic Idea:
0 1 2 3 4 input: nums = [1, 2, 3, 4, 5] 对于 nums[2], 它对应的解为 nums[0] 到 nums[1] 的乘积乘以 nums[3] 到 nums[4] 的乘积class Solution { public int[] productExceptSelf(int[] nums) { int[] left = new int[nums.length]; int[] right = new int[nums.length]; int[] ret = new int[nums.length]; int t = 1; for (int i = 0; i < nums.length; ++i) { left[i] = t * nums[i]; t = left[i]; } t = 1; for (int i = nums.length - 1; i >= 0; --i) { right[i] = t * nums[i]; t = right[i]; } for (int i = 0; i < ret.length; ++i) { int leftProduct = i == 0 ? 1 : left[i - 1]; int rightProduct = i == ret.length - 1 ? 1 : right[i + 1]; ret[i] = leftProduct * rightProduct; } return ret; } }