Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
For example,
Given sorted array A = [1,1,1,2,2,3]
,
Your function should return length = 5
, and A is now [1,1,2,2,3]
.
1 public class Solution { 2 public int removeDuplicates(int[] A) { 3 if(A == null || A.length == 0) 4 return 0; 5 int count = 1; 6 boolean meetTwice = false; 7 for(int i = 1; i < A.length; i++){ 8 if(A[i] == A[i-1]){ 9 if(meetTwice){ 10 continue; 11 }else{ 12 A[count++] = A[i]; 13 meetTwice = true; 14 } 15 }else{ 16 meetTwice = false; 17 A[count++] = A[i]; 18 } 19 } 20 return count; 21 } 22 }
public class Solution { public int removeDuplicates(int[] A) { if(A == null || A.length == 0) return 0; int start = 0, end = 0, count =1; for(int i = 1; i < A.length; i++){ if(A[i] == A[i-1]){ end++; if(end - start < 2){ A[count++] = A[i]; } continue; }else{ A[count++] = A[i]; start = i; end = i; } } return count; } }