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