题意:给一个数组,求最大连续字段积。
题解:这个跟最大连续子段和是一个套路,不过这里需要维护最大连续字段和和最小连续子段和,因为他们之间是互相转换的。
class Solution {
public:
int maxProduct(vector<int>& nums) {
int n = nums.size();
if(n == 0) return 0;
int local_min = nums[0],local_max = nums[0];
int maxn = nums[0];
for(int i = 1; i < n; i++)
{
int tmp = local_max;
local_max = max(nums[i],max(local_max * nums[i],local_min * nums[i]));
local_min = min(nums[i],min(local_min * nums[i],tmp * nums[i]));
maxn = max(maxn,local_max);
}
return maxn;
}
};