做这道题的时候很纠结,下面这个程序能够AC,
1 int n=A.length; 2 int i=0,j=0,cnt=0; 3 if(n==0||n==1) return n; 4 for(i=0;i<n-1;i++){ 5 if(A[i]==A[i+1]&&cnt<2){ 6 A[j++]=A[i]; 7 cnt++; 8 }else if(A[i]==A[i+1]&&cnt>=2){ 9 cnt++; 10 }else if(A[i]!=A[i+1]&&cnt<2){ 11 A[j++]=A[i]; 12 cnt=0; 13 }else if(A[i]!=A[i+1]&&cnt>=2){ 14 cnt=0; 15 } 16 17 } 18 if(A[n-1]!=A[n-2]||A[n-1]==A[n-2]&&cnt<2) 19 A[j++]=A[n-1]; 20 return j;
但是下面这个就不行,
1 if(A==null){ 2 // return 0; 3 // }else if(A.length<2){ 4 // return A.length; 5 // }else{ 6 // int n=A.length; 7 // int flag=0; 8 // int p=A[0]; 9 // for(int i=0;i<n;i++){ 10 // if(flag<2&&p==A[i]){ 11 // flag++; 12 // }else if(flag>=2&&p==A[i]){ 13 // for(int j=i+1;j<n;j++){ 14 // A[j-1]=A[j]; 15 // } 16 // n--; 17 // i--; 18 // }else{ 19 // p=A[i]; 20 // flag=0; 21 // } 22 // } 23 // return n; 24 // }