找出一个序列中乘积最大的连续子序列(至少包含一个数)。
样例
比如, 序列 [2,3,-2,4]
中乘积最大的子序列为 [2,3]
,其乘积为6
。
class Solution {
public:
/*
* @param nums: An array of integers
* @return: An integer
*/
int maxProduct(vector<int> &nums) {
int posMax = nums[0]; //正数最大
int negMax = nums[0]; //负数最大
int ret = nums[0]; //最大
for(int i=1;i<nums.size();i++)
{
int tempPosMax = posMax;
int tempNegMax = negMax;
posMax = max(nums[i],max(nums[i]*tempPosMax,nums[i]*tempNegMax));
negMax = min(nums[i],min(nums[i]*tempPosMax,nums[i]*tempNegMax));
ret = max(ret,posMax);
}
return ret;
}
};