题目:https://leetcode-cn.com/problems/maximum-product-subarray/
class Solution {
public:
int maxProduct(vector<int>& nums) {
/*
*给定一个整数数组 nums ,找出一个序列中乘积
*最大的连续子序列,该序列至少包含一个数
*思路:维护当前i结尾的最大、最小。维护最小是
*考虑了负数的情况
*/
int n = nums.size();
int mx = 1,mn = 1,ans = nums[0];
for(int i = 0;i < n;i++) {
if(nums[i] < 0) swap(mx,mn);
mx = max(nums[i],mx*nums[i]);
mn = min(nums[i],mn*nums[i]);
ans = max(ans,mx);
}
return ans;
}
};