T.C: O(n) S.C: O(n)
/**
* @param {number[]} nums
* @return {number[]}
*/
var productExceptSelf = function(nums) {
let stack = [];
let ptr = 0;
while(ptr < nums.length) {
let res = 1;
for(let i = 0; i < ptr; i++) {
res *= nums[i];
}
for(let j = ptr + 1; j < nums.length; j++) {
res *= nums[j];
}
stack.push(res);
ptr++;
}
return stack;
};T.C: O(n) S.C: O(1)
/**
* @param {number[]} nums
* @return {number[]}
*/
var productExceptSelf = function(nums) {
let res = new Array(nums.length).fill(1);
// calculate the prefix product
let prefixProduct = 1;
for (let i = 0; i < nums.length; i++) {
res[i] *= prefixProduct;
prefixProduct *= nums[i];
}
// calculate the suffix product
let suffixProduct = 1;
for (let i = nums.length - 1; i >= 0; i--) {
res[i] *= suffixProduct;
suffixProduct *= nums[i];
}
return res;
};