/*
* @lc app=leetcode.cn id=152 lang=javascript
*
* [152] 乘积最大子数组
*/
// @lc code=start
/**
* @param {number[]} nums
* @return {number}
*/
var maxProduct = function (nums) {
const maxProductMemo = []
const minProductMemo = []
maxProductMemo[0] = nums[0]
minProductMemo[0] = nums[0]
let max = nums[0]
for (let i = 1
// 数组里面存在负数,相乘变为正就是最大,所以比较三者之间的最大值和最小值
maxProductMemo[i] = Math.max(
nums[i],
nums[i] * maxProductMemo[i - 1],
nums[i] * minProductMemo[i - 1]
)
// console.log('object', maxProductMemo[i-1])
minProductMemo[i] = Math.min(
nums[i],
nums[i] * maxProductMemo[i - 1],
nums[i] * minProductMemo[i - 1]
)
max = Math.max(max, maxProductMemo[i])
}
return max
}
// @lc code=end