Given an integers array A.
Define B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], calculate B WITHOUT divide operation.
Example
For A = [1, 2, 3]
, return [6, 3, 2]
.
分析:
其实这题的限制条件挺脑残的,但是感觉实现的方式还是可以用在其它地方的。
1 public class Solution { 2 3 public int[] productExceptSelf(int[] A) { 4 5 int[] left = new int[A.length]; 6 int[] right = new int[A.length]; 7 int[] result = new int[A.length]; 8 9 for (int i = 0; i < A.length; i++) { 10 left[i] = i == 0 ? 1 : left[i - 1] * A[i - 1]; 11 } 12 13 for (int i = A.length - 1; i >= 0; i--) { 14 right[i] = (i == A.length - 1) ? 1 : right[i + 1] * A[i + 1]; 15 } 16 17 for (int i = 0; i < A.length; i++) { 18 result[i] = left[i] * right[i]; 19 } 20 return result; 21 } 22 }
1 public class Solution { 2 public int[] productExceptSelf(int[] nums) { 3 int n = nums.length; 4 int[] res = new int[n]; 5 res[0] = 1; 6 for (int i = 1; i < n; i++) { 7 res[i] = res[i - 1] * nums[i - 1]; 8 } 9 int right = 1; 10 for (int i = n - 1; i >= 0; i--) { 11 res[i] *= right; 12 right *= nums[i]; 13 } 14 return res; 15 } 16 }