LeetCode 152 乘積最大子串行

2021-09-24 04:28:56 字數 827 閱讀 2505

時間:2019.6.5(週三)

題目描述:給定乙個整數陣列 nums ,輸出乘積最大的連續子串行(該序列至少包含乙個數)的值。原題鏈結

難度等級:medium

思路一:雙重遍歷暴力求解。遍歷到 i,都和 i 之前的再迴圈一遍,找到最大值。這種解法會超時。

思路二動態遞迴。考慮利用之前的遍歷結果。求乘積最大的連續子串行,最麻煩之處在於:(1)當遇到0的時候,整個乘積會變成0;(2)當遇到負數的時候,當前的最大乘積會變成最小乘積,最小乘積會變成最大乘積。所以建立兩個陣列儲存最大值和最小值,

結果是最大值陣列中的最大值。

public

intmaxproduct

(int

nums)

return resval;

}

陣列可以進一步優化成 int,空間複雜度從o(n) -> o(1)。

class

solution

return resval;

}}

時間複雜度:o(n),只遍歷一次

空間複雜度:o(1),使用恆定的額外空間

Leetcode 152 乘積最大子串行

原題描述 找出乙個序列中乘積最大的連續子串行 該序列至少包含乙個數 例如,給定序列 2,3,2,4 其中乘積最大的子串行為 2,3 其乘積為6。解答 1.暴力搜尋 o n 2 沒有ac 超時 class solution return max 2.動態規劃思想,max min 每有乙個新的數字加入,...

Leetcode 152 乘積最大子串行

給定乙個整數陣列nums,找出乙個序列中乘積最大的連續子串行 該序列至少包含乙個數 示例 1 輸入 2,3,2,4 輸出 6解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0解釋 結果不能為 2,因為 2,1 不是子陣列。這裡用動態規化的方法,即dp i 為以i結尾乘積最大連...

leetcode152 乘積最大子串行

給定乙個整數陣列 nums 找出乙個序列中乘積最大的連續子串行 該序列至少包含乙個數 示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0 解釋 結果不能為 2,因為 2,1 不是子陣列。用三個變數分別記錄最大值,到之前乙個數的最大值和...