152 乘積最大子陣列

2021-10-25 04:02:52 字數 863 閱讀 9285

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

示例 1:

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

輸出: 6

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

示例 2:

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

輸出: 0

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

基本思路:動態規劃,由於複數的存在,使得子陣列的最大和最小值會可能顛倒,所以用兩個陣列記錄,dpmax[i]表示以i結尾的子陣列的最大值,dpmin[i]表示以i結尾的子陣列的最小值。

int maxproduct(vector& nums) 

else

maxpro=max(maxpro,dpmax[i]);

}return maxpro;

} //空間壓縮,只與前乙個狀態有關。

int maxproduct(vector& nums)

else

maxpro=max(maxpro,dpmax);

}return maxpro;

}

基本思路:記得毛爺爺的一句話,一切反動派都是紙老虎,從整體上看,先假設陣列裡沒有0,那麼結果只有兩種,

1)當負數個數為偶數時,整個陣列相乘就為結果,

2)當負數個數為奇數的話,取不含第乙個/最後乙個的最長連續子陣列相乘的最大值即為結果。

當陣列中含有0時,相當於把陣列分成乙個個不含1的子陣列。

int maxproduct(vector& nums) 

return res;

}

152 乘積最大子陣列

152.乘積最大子陣列 class solution def maxproduct self,nums list int int dp nums i for i in range len nums for j in range len nums max product dp 0 0 for i in...

152 乘積最大子陣列

給你乙個整數陣列 nums 請你找出陣列中乘積最大的連續子陣列 該子陣列中至少包含乙個數字 並返回該子陣列所對應的乘積。示例 1 輸入 2,3,2,4 輸出 6 解釋 子陣列 2,3 有最大乘積 6。示例 2 輸入 2,0,1 輸出 0 解釋 結果不能為 2,因為 2,1 不是子陣列。class s...

152 乘積最大子陣列

類似於53題最大子序和,給乙個整數陣列 nums 找出陣列中乘積最大的連續子陣列 該子陣列中至少包含乙個數字 並返回該子陣列所對應的乘積。乘積最大,連續子陣列 乘積最大的連續子陣列,使用動態規劃方法 class solution def maxproduct self,nums if not num...