题目描述
https://leetcode-cn.com/problems/maximum-product-subarray/
解
package main
func maxProduct(nums []int) int {
if len(nums) == 0 {
return 0
}
var max, min, r = nums[0], nums[0], nums[0]
for i := 1; i < len(nums); i++ {
v := nums[i]
mx, mn := max, min
max = getMax(mx*v, getMax(v, mn*v))
min = getMin(mn*v, getMin(v, mx*v))
r = getMax(r, max)
}
return r
}
func getMax(a, b int) int {
if a > b {
return a
}
return b
}
func getMin(a, b int) int {
if a < b {
return a
}
return b
}
思路
使用最大和最小两个统计,每次更新最大值是比较最大和最小分别的当前值的乘积。主要难点还是中间那个循环!