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

乘积最大子数组

作者: 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