152 乘積最大子陣列

2021-10-06 06:23:19 字數 1065 閱讀 6452

給你乙個整數陣列 nums ,請你找出陣列中乘積最大的連續子陣列(該子陣列中至少包含乙個數字),並返回該子陣列所對應的乘積。

示例 1:

輸入: [2,3,-2,4]

輸出: 6

解釋: 子陣列 [2,3] 有最大乘積 6。

示例 2:

輸入: [-2,0,-1]

輸出: 0

解釋: 結果不能為 2, 因為 [-2,-1] 不是子陣列。

class

solution

:def

maxproduct

(self, nums: list[

int])-

>

int:

imax =

1 imin =

1import sys

resmax =

-sys.maxsize

for i in nums:

if i<0:

t = imax

imax = imin

imin = t

imax =

max(imax*i,i)

imin =

min(imin*i,i)

resmax =

max(resmax,imax)

return resmax

具體思路見鏈結

畫解演算法:152. 乘積最大子串行

解題方案

思路標籤:動態規劃

遍歷陣列時計算當前最大值,不斷更新

令imax為當前最大值,則當前最大值為 imax = max(imax * nums[i], nums[i])

由於存在負數,那麼會導致最大的變最小的,最小的變最大的。因此還需要維護當前最小值imin,imin = min(imin * nums[i], nums[i])

當負數出現時則imax與imin進行交換再進行下一步計算

時間複雜度:o(n)o(n)

152 乘積最大子陣列

152.乘積最大子陣列 class solution def maxproduct self,nums list int int dp nums i for i in range len nums for j in range len nums max product dp 0 0 for i in...

152 乘積最大子陣列

類似於53題最大子序和,給乙個整數陣列 nums 找出陣列中乘積最大的連續子陣列 該子陣列中至少包含乙個數字 並返回該子陣列所對應的乘積。乘積最大,連續子陣列 乘積最大的連續子陣列,使用動態規劃方法 class solution def maxproduct self,nums if not num...

152 乘積最大子陣列

題目描述 給你乙個整數陣列 nums 請你找出陣列中乘積最大的連續子陣列 該子陣列中至少包含乙個數字 並返回該子陣列所對應的乘積。示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0 解釋 結果不能為 2,因為 2,1 不是子陣列。方法...