每日leetcode 乘積最大子串行

2021-09-23 13:37:26 字數 916 閱讀 9043

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

示例 1:

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

輸出: 6

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

示例 2:

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

輸出: 0

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

解析最大乘積可以由正數正數和負數負數得到,因此,需要同時記錄下最大值和最小值。

狀態定義:

f(x) -------- nums陣列中[0, x]範圍內的最大連續子串行的乘積,且該連續子串行以nums[x]結尾

g(x) -------- nums陣列中[0, x]範圍內的最小連續子串行的乘積,且該連續子串行以nums[x]結尾

狀態轉移:

(1)當x等於0時,顯然此時[0, x]範圍內只有乙個元素,f(0)和g(0)均等於這個唯一的元素。

(2)當x大於0時

a:如果nums[x] >= 0,f(x) = max(f(x - 1) * nums[x], nums[x]),g(x) = min(g(x - 1) * nums[x], nums[x])

b:如果nums[x] < 0,f(x) = max(g(x - 1) * nums[x], nums[x]),g(x) = min(f(x - 1) * nums[x], nums[x])

class solution 

else

}int result=int_min;

for(

int i=

0;isize()

;i++

)return result;}}

;

參考

乘積最大子串行 LeetCode

給定乙個整數陣列 nums 找出乙個序列中乘積最大的連續子串行 該序列至少包含乙個數 示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0 解釋 結果不能為 2,因為 2,1 不是子陣列。雙層for迴圈 第一層for迴圈i確定子串行起點...

Leetcode 最大子陣列乘積

給定乙個double型別的陣列arr,其中的元素可正可負可0,返回子陣列累乘的最大乘積。例如arr 2.5,4,0,3,0.5,8,1 子陣列 3,0.5,8 累乘可以獲得最大的乘積12,所以返回12。由於可能出現0 負數 負負得正情況 採取動態規劃策略 記錄以arr i 結尾的子陣列最大以及最小乘...

Leetcode 152每日一題 乘積最大子陣列

中等難度題目 給你乙個整數陣列nums,請你找出陣列中乘積最大的連續子陣列 該子陣列中至少包含乙個數字 並返回該子陣列所對應的乘積。輸入 2,3,2,4 輸出 6解釋 子陣列 2,3 有最大乘積 6。思路 max2 記錄每乙個元素為截止的子陣列乘積的最大最小,1 當前數 a i 為正,則最大值為 i...