jykim16
8/31/2017 - 4:39 PM

Product of Array Except Self

Product of Array Except Self

var productExceptSelf = function(nums) {
    let zeroCount = 0;
    let productWithoutZero = 1;
    let product = nums.reduce((accum, num)=>{
        if(num === 0) {zeroCount++}
        if(num !== 0) {productWithoutZero *= num}
        return accum * num;
    }, 1);

    return nums.map((num, i)=>{
        if(zeroCount === 0) {
            return product/num;
        } else if (zeroCount === 1) {
            if(num===0) {
                return productWithoutZero;
            } else {
                return product;
            }
        } else {
            return 0;
        }
    })
};