使用动态规划的方式
int maxProduct(vector<int>& nums) {
int maxDP=INT32_MIN;//最大值
int dp1=0;
int dp2=1;
for(int i=0;i<nums.size();i++) {
if (nums[i] >=0) {
//dp1表示以i为结尾的最大值
dp1 = max(nums[i], nums[i] * dp1);
dp2 = nums[i] * dp2;//dp2表示以i为结尾的最小值
} else {
int t=dp1;
dp1=max(nums[i]*dp2,nums[i]);
dp2=min(nums[i]*t,nums[i]);
}
maxDP = std::max(dp1, maxDP);
}
return maxDP;
}