classSolution{public:intmaxProduct(vector<int>&nums){intans=nums[0];intdpMin=nums[0];// Min so farintdpMax=nums[0];// Max so farfor(inti=1;i<nums.size();++i){constintnum=nums[i];constintprevMin=dpMin;// dpMin[i - 1]constintprevMax=dpMax;// dpMax[i - 1]if(num<0){dpMin=min(prevMax*num,num);dpMax=max(prevMin*num,num);}else{dpMin=min(prevMin*num,num);dpMax=max(prevMax*num,num);}ans=max(ans,dpMax);}returnans;}};
classSolution{publicintmaxProduct(int[]nums){intans=nums[0];intdpMin=nums[0];// Min so farintdpMax=nums[0];// Max so farfor(inti=1;i<nums.length;++i){finalintnum=nums[i];finalintprevMin=dpMin;// dpMin[i - 1]finalintprevMax=dpMax;// dpMax[i - 1]if(num<0){dpMin=Math.min(prevMax*num,num);dpMax=Math.max(prevMin*num,num);}else{dpMin=Math.min(prevMin*num,num);dpMax=Math.max(prevMax*num,num);}ans=Math.max(ans,dpMax);}returnans;}}