Find the contiguous subarray within an array (containing at least one number) which has the largest product.
For example, given the array [2,3,-2,4],
the contiguous subarray [2,3] has the largest product = 6.
题意:找到一个积最大的连续子队列(最少一个数)
class Solution {
public:
/*
[]
[1,-1]
[2,3,-2,4]
[2,3,-2,2,-2,4]
*/
int maxProduct(vector<int>& nums) {
if(nums.size() == 0) return 0;
int result = nums[0];
// imax、imin 分别记录到 i 为止的最大值、最小值
for(int i = 1, imax = nums[0], imin = nums[0]; i < nums.size(); ++i){
if(nums[i] < 0)
std::swap(imax, imin);
imax = max(nums[i], imax * nums[i]);
imin = min(nums[i], imin * nums[i]);
result = max(imax, result);
}
return result;
}
};