LeetCode152 乘積最大子陣列

2021-10-06 06:27:27 字數 922 閱讀 7748

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

動態規劃,設dp[i]為以nums[i]結尾的連續子陣列中乘積最大的值;

dp[i]=max(dp[i-1]*nums[i],nums[i]),由於存在負數,所以需要加乙個維度同時儲存以num[i]結尾的連續子陣列中乘積最大值和最小值,當遇到nums[i]<0時,dp[i]的最大積計算時需要乘以dp[i-1]的最小積,dp[i]的最小積計算時需要乘以dp[i-1]的最大積。

class

solution

else

max=math.

max(max,dp[i][1

]);}

return math.

max(max,dp[0]

[1])

;}}

空間優化

由於dp[i]只用到了dp[i-1]的值,可以用滾動變數。當nums[i]為負數時,交換前乙個狀態最大與最小

class

solution

imax=math.

max(n,n*imax)

; imin=math.

min(n,n*imin)

; max=math.

max(imax,max);;

}return max;

}}

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 不是子陣列。用三個變數分別記錄最大值,到之前乙個數的最大值和...