. - 力扣(LeetCode)
給你一個整數數組?nums
?,請你找出數組中乘積最大的非空連續
子數組
(該子數組中至少包含一個數字),并返回該子數組所對應的乘積。
測試用例的答案是一個?32-位?整數。
示例 1:
輸入: nums = [2,3,-2,4]
輸出: 6
解釋:?子數組 [2,3] 有最大乘積 6。
示例 2:
輸入: nums = [-2,0,-1] 輸出: 0 解釋:?結果不能為 2, 因為 [-2,-1] 不是子數組。
提示:
1 <= nums.length <= 2 * 104
-10 <= nums[i] <= 10
nums
?的任何前綴或后綴的乘積都?保證?是一個?32-位?整數
class Solution {
public:int maxProduct(vector<int>& nums) {int n = nums.size();int minP = 1;int maxP = 1;int res = nums[0];for (int i = 0; i < nums.size(); i++) {int val = nums[i];int mini = minP * val;int maxi = maxP * val;minP = std::min(std::min(mini, maxi), val);maxP = std::max(std::max(mini, maxi), val);res = std::max(res, maxP);}return res;}
};