数学
注重0和负数的影响
class Solution {
public:
int maxProduct(vector<int>& nums) {
int n=nums.size();
int out=nums[0];
int neg_first=1,neg_pro=1;
int neg_n=0;
for(int i:nums){
if(i>0){
neg_pro*=i;
out=max(out,neg_pro);
}else if(i==0){
neg_pro=1;
neg_n=0;
out=max(out,0);
}else{
neg_n++;
if(neg_n==1){
neg_first=neg_pro*i;
neg_pro=1;
out=max(out,neg_first);
}else{
if(neg_n%2==0){
neg_pro=neg_pro*i*neg_first;
out=max(out,neg_pro);
}
else{
neg_pro=neg_pro*i/neg_first;
out=max(out,neg_pro);
}
}
}
}
return out;
}
};