最大子陣列乘積

2021-10-09 15:12:57 字數 1099 閱讀 3030

題目鏈結

動態規劃的典型題目,這道題實際上是最大連續子陣列和的乙個高階版本。這道題的難點在於,這裡要同時構建兩個輔助陣列。

f (n

)f(n)

f(n)

代表從區間[0,

n]

[0,n]

[0,n

]內,以n為結尾的最大乘積。與之相對的,g(n

)g(n)

g(n)

代表從區間[0,

n]

[0,n]

[0,n

]內,以n為結尾的最小乘積

動態轉移的方程是這樣的

f (n

)=ma

xf(n)=max\

f(n)=m

axg (n

)=ma

xg(n)=max\

g(n)=m

ax這個演算法實際上遍歷一遍就能得出結果。雖然f(n

)f(n)

f(n)

定義的是區間[0,

n]

[0,n]

[0,n

]的值,但是演算法會自動判斷a[n

]a[n]

a[n]

與左側的值相乘數值會不會增加,從而選擇截斷或者是延續

當演算法執行完畢後,f(n

)f(n)

f(n)

實際上代表一小段包括a[n

]a[n]

a[n]

的子區間的乘積最大值。

class

solution

intthreemin

(int a,

int b,

int c)

public

:int

maxproduct

(vector<

int>

& nums)

long

long ans =

-0x3f3f3f3f

;for

(int i =

0; i < size; i++

)return ans;}}

;

乘積最大子陣列

leetcode 乘積最大子陣列 一開始我並沒有用dp 而是分情況討論的,即通過0將資料分為幾段,因為含有0的必定會使結果為0 然後就是考慮負數 在所分的每段裡計算乘積,如果負數個數為奇數,將最後出現的那段除掉,然後輸出最大值再比較 非常長 但是可以跑過 長的我自己都不想看,沒臉看,看不明白啊,娘的...

乘積最大子陣列

給你乙個整數陣列 nums 請你找出陣列中乘積最大的連續子陣列 該子陣列中至少包含乙個數字 並返回該子陣列所對應的乘積。示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,3,2 輸出 12 解釋 子陣列 2,3,2 有最大乘積 12。對於每個元素,我...

乘積最大子陣列

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