給定一個整數數組 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