152 最大乘積子串行

2021-08-21 12:21:16 字數 833 閱讀 9707

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

示例 1:

輸入:[2,3,-2,4]輸出:6解釋:子陣列 [2,3] 有最大乘積 6。
示例 2:

輸入:[-2,0,-1]輸出:0解釋:結果不能為 2, 因為 [-2,-1] 不是子陣列。
解題思路:

最大乘積本質上與最大和是一樣的,但是由於存在負數,所以需要同時記錄最小值和最大值.

每次都更新maxend,minend.

那麼狀態轉移方程為:

maxend = max(max(maxend*data[i] , minend*data[i]) , data[i]);

minend = min(min(maxend*data[i] , minend*data[i]) , data[i]);

初始狀態為 maxend = minend = data[0];

為什麼非要比較data[i]而不是和之前的maxend or minend 比較呢?因為它是乙個連續的串,所以必須每乙個部分都要乘進來,如果是乙個不連續的最大乘積,那麼是與之前的maxend or minend作比較

code:

class solution 

return ret;

}}

79 最大乘積子串行

題目描述 給定乙個整數陣列 nums 找出乙個序列中乘積最大的連續子串行 該序列至少包含乙個數 示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0 解釋 結果不能為 2,因為 2,1 不是子陣列。這道題最大的問題就是如何在o n 的複...

152 乘積最大子串行

給定乙個整數陣列 nums 找出乙個序列中乘積最大的連續子串行 該序列至少包含乙個數 示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0 解釋 結果不能為 2,因為 2,1 不是子陣列。記錄每一處為止的列表乘積最大最小值,後一處乘積的...

152 乘積最大子串行

給定乙個整數陣列 nums 找出乙個序列中乘積最大的連續子串行 該序列至少包含乙個數 示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0 解釋 結果不能為 2,因為 2,1 不是子陣列。如果要求不連續,把所有大於 0 的數字拿出來乘積...