Leetcode - Count Square Submatrices with All Ones
leetcode - Number Of Corner Rectangles

Leetcode - Maximum Product Subarray

violet posted @ May 22, 2020 01:58:24 AM in 算法 with tags Algorithm Golang array , 214 阅读

https://leetcode.com/problems/maximum-product-subarray/

Given an integer array nums, find the contiguous subarray within an array (containing at least one number) which has the largest product.

Example 1:

Input: [2,3,-2,4]
Output: 6
Explanation: [2,3] has the largest product 6.

Example 2:

Input: [-2,0,-1]
Output: 0
Explanation: The result cannot be 2, because [-2,-1] is not a subarray.

 

func maxProduct(nums []int) int {
    var (
        maxHerePre = nums[0]
        minHerePre = nums[0]
        maxSofar = nums[0]
        maxHere int
        minHere int
    )
    for i := 1; i < len(nums); i++ {
        maxHere = max(max(nums[i] * maxHerePre, nums[i] * minHerePre), nums[i])
        minHere = min(min(nums[i] * minHerePre, nums[i] * maxHerePre), nums[i])
        maxSofar = max(maxHere, maxSofar)
        maxHerePre = maxHere
        minHerePre = minHere
    }
    return maxSofar
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}

func min(a, b int) int {
    if a < b {
        return a
    }
    return b
}

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter