leetcode 238. Product of Array Except Self
Given an array nums
of n integers where n > 1, return an array output
such that output[i]
is equal to the product of all the elements of nums
except nums[i]
.
Example:
Input:[1,2,3,4]
Output:[24,12,8,6]
Note: Please solve it without division and in O(n).
Follow up:
Could you solve it with constant space complexity? (The output array does not count as extra space for the purpose of space complexity analysis.)
很巧妙的解法,先用一个循环累乘该元素左边的所有数,再用一个循环累乘右边的所有数(倒序循环)。两个串联的循环,最后的时间还是O(n)。
class Solution { public int[] productExceptSelf(int[] nums) { int n = nums.length; int[] res = new int[n]; res[0] = 1; for(int i = 1; i < n; i++) { res[i] = res[i-1] * nums[i-1]; } int right = 1; for(int i = n-1; i >= 0; i--) { res[i] *= right; right *= nums[i]; } return res; } }