package problems.medium; /** * Created by sherxon on 2016-12-30. */ public class MaximumProductSubarray { public static void main(String[] args) { int a= new MaximumProductSubarray().maxProduct(new int[]{-2,0}); System.out.println(a); } public int maxProduct(int[] a) { if(a==null || a.length==0)return 0; if(a.length==1)return a[0]; int max=Integer.MIN_VALUE; int sum2=1; int sum=1; int minus=0; int lastminus=1; for (int i = 0; i < a.length; i++) { if(a[i]<0){ minus++; if(minus%2!=0){ sum=sum2; sum2=1; }else{ sum*=sum2*lastminus*a[i]; } max=Math.max(max, sum2); max=Math.max(max, sum); lastminus=a[i]; continue; } if(a[i]==0){ if(minus%2!=0)sum2/=lastminus; max=Math.max(max, sum2); sum2=1; sum=1; minus=0; lastminus=1; }else{ sum2*=a[i]; max=Math.max(max, sum2); } } if(minus%2!=0)sum2/=lastminus; max=Math.max(max, sum2); return max; } }