LeetCode--152--乘積最大子序列(python)

給定一個整數數組 nums ,找出一個序列中乘積最大的連續子序列(該序列至少包含一個數)。數組

示例 1:spa

輸入: [2,3,-2,4]
輸出: 6
解釋: 子數組 [2,3] 有最大乘積 6。
示例 2:code

輸入: [-2,0,-1]
輸出: 0
解釋: 結果不能爲 2, 由於 [-2,-1] 不是子數組。blog

令imax,imin爲當前索引的最大最小值索引

當遇到負數的時候,負數乘最大值就變成了最小值,因此應該在比較以前把imax和imin調換io

 1 class Solution:
 2     def maxProduct(self, nums: List[int]) -> int:
 3         Max = nums[0] 
 4         imax,imin=1,1
 5         for i in nums:
 6             if i < 0:
 7                 imax,imin=imin,imax
 8             imax= max(imax*i,i)
 9             imin=min(imin*i,i)
10             Max = max(imax,Max)
11         return Max
相關文章
相關標籤/搜索