本来以为就是dp[i]=max(dp[i-1]*nums[i],dp[i]),结果发现有符号可以变得更大,直接就不会了
思路:
class Solution {
public:
int maxProduct(vector<int>& nums) {
int maxn=1;int minn=1;
int ans=INT_MIN;
if(nums.size()==1){
return nums[0];
}
for(int i=0;i<nums.size();i++){
if(nums[i]<0){
int a=maxn;
maxn=minn;
minn=a;
}
maxn=max(maxn*nums[i],nums[i]);
minn=min(minn*nums[i],nums[i]);
ans=max(maxn,ans);
}
return ans;
}
};
思路也是很巧妙,确实没想到