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]
Constraints:
2 <= nums.length <= 105
-30 <= nums[i] <= 30
- The product of any prefix or suffix of
nums
is guaranteed to fit in a 32-bit integer.
class Solution {
public int[] productExceptSelf(int[] nums) {
int[] pr = new int[nums.length];
int[] sf = new int[nums.length];
int[] res = new int[nums.length];
int prc = 0;
int sfc = nums.length - 1;
while(prc < nums.length){
if(prc == 0){
pr[prc] = 1;
}else{
pr[prc] = pr[prc - 1] * nums[prc - 1];
}
if(sfc == nums.length - 1){
sf[sfc] = 1;
}else{
sf[sfc] = sf[sfc + 1] * nums[sfc + 1];
}
prc++;
sfc--;
}
for(int i= nums.length - 1; i >= 0; i--){
System.out.println(sf[i]+" "+pr[i]);
res[i] = pr[i] * sf[i];
}
return res;
}
}
Comments
Post a Comment