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.
保存正负,4ms
class Solution {
public:
int maxProduct(vector<int>& nums) {
int len = nums.size(),ret=nums[0];
vector<vector<int> >dp(len, vector<int>(2, 0));
dp[0][0] = nums[0];
dp[0][1] = nums[0];
for (int i = 1; i < len; i++) {
dp[i][0]= max(max(dp[i - 1][0] * nums[i],nums[i]),dp[i - 1][1] * nums[i]);
dp[i][1] = min(min(dp[i - 1][0] * nums[i],nums[i]),dp[i - 1][1] * nums[i]);
ret=max(ret,dp[i][0]);
}
return ret;
}
};