注意点:考虑元素的正负,对应的状态转移方程不同
class Solution {
public:
int maxProduct(vector<int>& nums) {
int n=nums.size();
int dp_max[n];
int dp_min[n];
dp_max[0]=nums[0];
dp_min[0]=nums[0];
int result=INT_MIN;
for(int i=1;i<n;i++){
if(nums[i]>0){
dp_max[i]=max(nums[i],nums[i]*dp_max[i-1]);
dp_min[i]=min(nums[i],nums[i]*dp_min[i-1]);
}else{
dp_max[i]=max(nums[i],nums[i]*dp_min[i-1]);
dp_min[i]=min(nums[i],nums[i]*dp_max[i-1]);
}
result = max(result,dp_max[i]);
}
return result;
}
};