Skip to content

Latest commit

 

History

History
59 lines (49 loc) · 1.17 KB

File metadata and controls

59 lines (49 loc) · 1.17 KB
Screen Shot 2023-05-24 at 1 08 40 AM

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;
};