美文网首页
乘积最大子数组

乘积最大子数组

作者: 7赢月 | 来源:发表于2020-05-18 21:21 被阅读0次

题目描述

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
}


思路

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

相关文章

网友评论

      本文标题:乘积最大子数组

      本文链接:https://www.haomeiwen.com/subject/asopohtx.html