题目:
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]
.
删除重复超过两边的元素,可以利用i指向当前访问的元素,j指向处理过的元素的末尾,并设置一个重复计数器。只将重复数小于3的元素执行A【j++】=A【i】
public class No80_RemoveDuplicatesFromSortedArrayII {
public static void main(String[] args){
int[] A = new int[]{1,1,1,2};
System.out.println(removeDuplicates(A));
for(int i:A)
System.out.print(i+" ");
}
public static int removeDuplicates(int[] A) {
if(A.length <= 2) return A.length;
int count = 1;
int pre = A[0];
int j = 1;
for(int i=1;i<A.length;i++){
if(A[i] == pre && ++count>2){
continue;
}
if(A[i] != pre){
pre = A[i];
count = 1;
}
A[j++] = A[i];
}
return j;
}
}