Skip to main content

152. Maximum Product Subarray

分析

存在 负负得正 的情况,因此要保留最大 和 最小的状态

推荐这个题解

题解

function maxProduct(nums: number[]): number {
let ans = nums[0]
let prevMin = ans, prevMax = ans
for (const num of nums.slice(1)) {
const temp1 = num * prevMin
const temp2 = num * prevMax
prevMin = Math.min(temp1, temp2, num)
prevMax = Math.max(temp1, temp2, num)
ans = Math.max(ans, prevMax)
}

return ans
};