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]
.
Difficulty: Medium
Solution: I got the idea from Internet. There are two loops in this solution. The first calculate all the numbers on the right, the second calculate all the other numbers on the left.
public class Solution {
public int[] productExceptSelf(int[] nums) {
int len = nums.length;
int[] res = new int[len];
res[len - 1] = 1;
for(int i = len - 2; i >= 0; i--){
res[i] = nums[i + 1] * res[i + 1];
}
int temp = nums[0];
for(int i = 1; i < len; i++){
res[i] *= temp;
temp*=nums[i];
}
return res;
}
}