Remove Duplicates from Sorted Array II

做这道题的时候很纠结,下面这个程序能够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 //        }
原文地址:https://www.cnblogs.com/weilq/p/3640871.html