238.除自身以为数组的乘积

/**
 * @param {number[]} nums
 * @return {number[]}
 */
// 题目转换:遍历数组,求当前数的左边的乘积和右边的乘积
var productExceptSelf = function (nums) {
    let n = nums.length

    let leftArr = new Array(n).fill(0) // 左边数的乘积
    leftArr[0] = nums[0]
    for (let i = 1; i < n; i++) {
        leftArr[i] = leftArr[i - 1] * nums[i]
    }

    let rightArr = new Array(n).fill(0) // 右边数的乘积
    rightArr[rightArr.length - 1] = nums[n - 1]
    for (let i = n - 2; i >= 0; i--) {
        rightArr[i] = rightArr[i + 1] * nums[i]
    }

    // 遍历每个数,求左边乘以右边即可
    let res = []
    for (let i = 0; i < n; i++) {
        // 第一项
        if (i === 0) {
            res.push(rightArr[i + 1])
            continue
        }
        // 最后一项
        if (i === n - 1) {
            res.push(leftArr[i - 1])
            continue
        }

        res.push(leftArr[i - 1] * rightArr[i + 1])
    }

    return res
};