题目地址: 链接
思路: dp
ts
/*
* @lc app=leetcode.cn id=152 lang=typescript
*
* [152] 乘积最大子数组
*/
// @lc code=start
function maxProduct(nums: number[]): number {
const n = nums.length;
const dp = Array.from({length: n + 1}, () => new Array(2).fill(0));
if(n == 1) return nums[0];
let ans = 0;
for(let i = 0; i < n; i ++) {
const num = nums[i];
dp[i + 1][0] = Math.min(num, num * dp[i][1], num * dp[i][0]);
dp[i + 1][1] = Math.max(num, num * dp[i][1], num * dp[i][0]);
ans = Math.max(dp[i + 1][1], ans);
}
return ans;
};
// @lc code=end