乘积最大子数组

2020-05-18  本文已影响0人  7赢月

题目描述

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
}


思路

使用最大和最小两个统计,每次更新最大值是比较最大和最小分别的当前值的乘积。主要难点还是中间那个循环!

上一篇 下一篇

猜你喜欢

热点阅读