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

Leetcode - Maximum Product Subarray

violet posted @ 5 年前 in 算法 with tags Algorithm Golang array , 236 阅读

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.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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