找出一个序列中乘积最大的连续子序列(至少包含一个数)。
样例
样例 1:
输入:[2,3,-2,4]
输出:6
样例 2:
输入:[-1,2,4,1]
输出:8
注意事项
乘积最大的子序列的积,小于2147483647
class Solution {
public:
/**
* @param nums: An array of integers
* @return: An integer
*/
int maxProduct(vector<int> &nums) {
// write your code here
if(nums.size()<=0) return 0;
int maxcur=nums[0];
int mincur=nums[0];
int res=nums[0];
for (int i = 1; i < nums.size(); i++) {
int maxTemp = maxcur, minTemp = mincur;
maxcur=max(nums[i],max(nums[i]*maxTemp,nums[i]*minTemp));
mincur=min(nums[i],min(nums[i]*maxTemp,nums[i]*minTemp));
res=max(res,maxcur);
}
return res;
}
};