Product of Array Except Self
Problem:
Given an array of n integers where n > 1,
nums
, return an array output
such that output[i]
is equal to the product of all the elements of nums
except nums[i]
.
Solve it without division and in O(n).
For example, given
[1,2,3,4]
, return [24,12,8,6]
.
Follow up:
Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)
Could you solve it with constant space complexity? (Note: The output array does not count as extra space for the purpose of space complexity analysis.)
Analysis:
The single result can be achieved by preProduct left X preProduct right.
[1, 2, 3, 4], the left product array is [1, 1, 2, 6]. Remember the left[i] is the product from nums[0] to nums[i - 1].
Solution:
class Solution { public int[] productExceptSelf(int[] nums) { if (nums == null || nums.length == 0) return nums; int[] left = new int[nums.length]; left[0] = 1; int right = 1; for (int i = 1; i < nums.length; i++) { left[i] = left[i - 1] * nums[i - 1]; } for (int i = nums.length - 1; i >= 0; i--) { left[i] *= right; right *= nums[i]; } return left; } }
评论
发表评论