乘積最大子陣列

2021-10-06 06:21:15 字數 765 閱讀 9522

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

示例 1:

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

輸出: 6

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

示例 2:

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

輸出: 12

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

對於每個元素,我們可以找到以它結尾的子陣列的最大乘積,然後將每乙個子陣列的乘積進行比較,得到最終結果。

那麼,如何求取每個元素結尾的子陣列的最大乘積呢?(用 maxs[i] 表示以 nums[i] 結尾的子陣列的最大乘積,maxs[0] = nums[0])

從陣列的第二個元素開始,它的取值有 2 種情況:

因此,我們還需要考慮以 nums[i] 結尾的子陣列的最小乘積 mins[i](mins[0] = nums[0],mins[i] = math.min(nums[i],nums[i] * mins[i-1]))。

**實現:

public

intmaxproduct

(int

nums)

int res = integer.min_value;

for(

int i : maxs)

return res;

}

乘積最大子陣列

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

最大子陣列乘積

題目鏈結 動態規劃的典型題目,這道題實際上是最大連續子陣列和的乙個高階版本。這道題的難點在於,這裡要同時構建兩個輔助陣列。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為結尾的最小...

乘積最大子陣列

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