238. Product of Array Except Self
Time = O(n), Extra Space = O(n)
class Solution {
public int[] productExceptSelf(int[] nums) {
int[] res = new int[nums.length];
int[] left = new int[nums.length];
int[] right = new int[nums.length];
left[0] = 1;
right[nums.length - 1] = 1;
for (int i = 1; i < nums.length; i++) {
left[i] = left[i - 1] * nums[i - 1];
}
for (int j = nums.length - 2; j >= 0; j--) {
right[j] = right[j + 1] * nums[j + 1];
}
for (int i = 0; i < nums.length; i++) {
res[i] = left[i] * right[i];
}
return res;
}
}
优化空间 (No additional space):
class Solution {
public int[] productExceptSelf(int[] nums) {
int[] res = new int[nums.length];
res[0] = 1;
for (int i = 1; i < nums.length; i++) {
res[i] = res[i - 1] * nums[i - 1];
}
int right = 1;
for (int i = nums.length - 1; i >= 0; i--) {
res[i] = res[i] * right;
right = right * nums[i];
}
return res;
}
}