Skip to content

📚 32.数组最大乘积

💻 代码实现

typescript
/**
 * @url https://leetcode.cn/problems/maximum-product-subarray/description/?envType=study-plan-v2&envId=top-100-liked
 */


// ps: 负数的情况容易被忽略掉
/**
 * @param {number[]} nums
 * @return {number}
 */
var maxProduct = function (nums) {
    const dpMax = new Array(nums.length).fill(0) // 最大乘积
    const dpMin = new Array(nums.length).fill(0) // 最小乘积
    dpMax[0] = nums[0]
    dpMin[0] = nums[0]

    for (let i = 1; i < nums.length; i++) {
        dpMax[i] = Math.max(dpMax[i - 1] * nums[i], dpMin[i - 1] * nums[i], nums[i])
        dpMin[i] = Math.min(dpMax[i - 1] * nums[i], dpMin[i - 1] * nums[i], nums[i])
    }
    return Math.max(...dpMax, ...dpMin)
};

Released under the MIT License.