LeetCode第152題 乘積最大子串行

2021-08-28 23:42:44 字數 910 閱讀 3994

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

示例 1:

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

輸出: 6

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

示例 2:

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

輸出: 0

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

nums【i-1】 必然會得到乙個 max值,,,那麼我們能不能通過nums【i-1】求得nums【i】呢,,測試 一些 資料 就知道了

比如 對於 -2,4,-3 而言, nums的 max值 是4,而nums的max值卻是 -24-3 為 24,== 所以可以得到結論,從i-1的max值是不能直接推出i的max值的(即我們還需要記錄其他的輔助值!!!!)==

這個 需要從目的出發來分析,如果求 i的max值有哪幾種情況呢???

1)max值就是 nums【i】(這種情況別忘了)

2)max值是從i-1的max值繼承而來的

3)max值為除了i當前外 ,之前元素連乘獲得的最大乘積 p乘以nums【i】 (ps:nums【i】為正數)即pnums【i】

4)max值為除了i當前外 ,之前元素連乘獲得的最小乘積q乘以nums【i】 (ps:nums【i】為負數)即qnums【i】

struct my_node;

int max_three_nums(int &x,int &y,int &z)

int min_three_nums(int &x, int &y, int &z)

int maxproduct(vector& nums)

return m[nums.size() - 1].max_elem;

}

LeetCode演算法題152 乘積最大子串行解析

給定乙個整數陣列 nums 找出乙個序列中乘積最大的連續子串行 該序列至少包含乙個數 示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0 解釋 結果不能為 2,因為 2,1 不是子陣列。這個題和最大子序和有些類似,但是這個題更複雜一些...

LeetCode 152題 乘積最大子串行

示例 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6,返回為6。思路 動態規劃 定義陣列 dpmax i 表示以第i個元素結尾的子陣列中乘積最大的值,這個陣列必須包含第i個元素 對於 dpmax i 有三種取值 1.nums i 0 且 dpmax i 1 0 則 dpmax ...

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

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