LeetCode 152 乘積最大子陣列(dp)

2021-10-19 08:16:57 字數 617 閱讀 5346

題意:

給你乙個整數陣列 nums ,

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

資料範圍:

題目沒給

解法:
設d[i]為以i結尾的最大乘積,發現由於陣列中會存在負數,負數乘負數會轉正,

這意味著a[i]有可能乘上前面的負數之後反而更大.

因此令d[i][0

/1]表示以i結尾的 最大/最小乘積,

轉移方程:

d[i][0

]=max

d[i][1

]=min(d[i-1]

[0]*a[i]

,d[i-1]

[1]*a[i]

,a[i]}.

ans=max

.

code:
class

solution);

int ans=a[0]

; d[0]

[0]=d[0]

[1]=a[0]

;for

(int i=

1;i)return ans;}}

;

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