去重的特点在于排序,相邻的两个数相同就可以去重复了。
1.去掉目标值
2.去掉重复数
3.去掉重复次数大于N的数
------------------------------------------------------------
实现:1,2 有个共同点就是匹配后,获取当前总的重复数,然后后面的移动位置A[i-count]=A[i];
3.控制就在于向后面直接计算 (向后的话移动后不好计算)
public int removeDuplicates(int[] A) {
int length=A.length;
if(length<=2)
return length;
int count=0;
for(int i=0;i<A.length-2;i++){
if(A[i+2]==A[i]){
count++;
}else{
A[i-count]=A[i];
}
}
if(A.length-2-count>=0){
A[A.length-2-count]=A[A.length-2];
A[A.length-1-count]=A[A.length-1];
}
for(int i=count;i>0;i--){
A[length-i]=0;
}
return length-count;
}