Product of Array Except Self
Given an integer array nums, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i].
The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer.
You must write an algorithm that runs in O(n) time and without using the division operation.
Example 1:
Input: nums = [1,2,3,4]
Output: [24,12,8,6]
Example 2:
Input: nums = [-1,1,0,-3,3]
Output: [0,0,9,0,0]
class Solution {
public int[] productExceptSelf(int[] nums) {
int n = nums.length;
int[] producttforward = new int[n]; // stores product of elements after index i
int[] productbackward = new int[n]; // stores product of elements before index i
int[] res = new int[n];
// Forward: product of elements to the right
producttforward[n - 1] = 1; // last element has no right side
for (int i = n - 2; i >= 0; i--) {
producttforward[i] = producttforward[i + 1] * nums[i + 1];
}
// Backward: product of elements to the left
productbackward[0] = 1; // first element has no left side
for (int j = 1; j < n; j++) {
productbackward[j] = productbackward[j - 1] * nums[j - 1];
}
// Combine forward and backward
for (int k = 0; k < n; k++) {
res[k] = producttforward[k] * productbackward[k];
}
return res;
}
}
Comments
Post a Comment