050_乘积最大子数组
知识点:乘法原理、动态规划
LeetCode第一百五十二题:https://leetcode-cn.com/problems/maximum-product-subarray/solution/
语言:GoLang
func maxProduct(nums []int) int {
length := len(nums)
if length == 0 {
return 0
}
if length == 1 {
return nums[0]
}
minDp := make([]int, length)
maxDp := make([]int, length)
minDp[0] = nums[0]
maxDp[0] = nums[0]
maxx := maxDp[0]
for i := 1; i < length; i++ {
maxDp[i] = max(nums[i], max(minDp[i - 1] * nums[i], maxDp[i - 1] * nums[i]))
minDp[i] = min(nums[i], min(minDp[i - 1] * nums[i], maxDp[i - 1] * nums[i]))
if maxDp[i] > maxx {
maxx = maxDp[i]
}
}
return maxx
}

浙公网安备 33010602011771号