1. 线性DP 152. 乘积最大子数组
152. 乘积最大子数组 https://leetcode-cn.com/problems/maximum-product-subarray/
func maxProduct(nums []int) int { preMax,preMin,curMax,curMin,res := nums[0],nums[0],1,1,nums[0] for i:=1;i<len(nums);i++{ if nums[i] > 0{ curMax = MAX(preMax,1)*nums[i] curMin = MIN(preMin,1)*nums[i] }else{ curMax = MIN(preMin,1)*nums[i] curMin = MAX(preMax,1)*nums[i] } preMax = curMax preMin = curMin if curMax > res{ res = curMax } } return res } func MAX(i,j int) int{ if i<j{ return j }else{ return i } } func MIN(i,j int) int{ if i<j{ return i }else{ return j } }