1 题目
Given an integer array nums, find the contiguous subarray within an array (containing at least one number) which has the largest product.
Example 1:
Input: [2,3,-2,4]
Output: 6
Explanation: [2,3] has the largest product 6.
Example 2:
Input: [-2,0,-1]
Output: 0
Explanation: The result cannot be 2, because [-2,-1] is not a subarray.
2 标准解
class Solution {
public:
int maxProduct(vector<int>& nums) {
if(nums.size()==0) return 0;
int pre_max = nums[0],pre_min = nums[0], cur_max = nums[0] , cur_min = nums[0];
int result = nums[0];
for(int i=1;i<nums.size();i++){
cur_max = max(pre_max*nums[i],pre_min*nums[i]);
cur_max = max(cur_max,nums[i]);
cur_min = min(pre_max*nums[i],pre_min*nums[i]);
cur_min = min(cur_min,nums[i]);
if(cur_max > result) result = cur_max;
pre_max = cur_max;
pre_min = cur_min;
}
return result;
}
};