给定一个有序数组,删除其中部分元素,使得剩下的每个数最多出现2次。要求删除的数的数量尽可能少。
例如:
给出有序数组 A =[1,1,1,2,2,3],
你给出的函数应该返回length =5, A 变为[1,1,2,2,3].
public int removeDuplicates(int A[]){
if( A.length<3)
return A.length;
int count=0;//计数器
for (int i = 0; i < A.length-2; i++) {//最后两个不用比较
//只和后边的比较保证了A[count++]=A[i]改动的值,不会再用来比较
if (A[i]==A[i+1] && A[i+1]==A[i+2])
continue;
else
A[count++]=A[i];
}
int len=A.length;
//最后两个肯定不重复
A[count++]=A[len-2];
A[count++]=A[len-1];
return count;
}
import java.util.*;
public class Solution {
public static int removeDuplicates(int[] A) {
if(A.length == 0) return 0;
List<Integer> list = new ArrayList<>();
list.add(A[0]);
int count = 1;
for (int i = 1; i < A.length; i ++ ) {
if(A[i] == A[i - 1]) count ++ ;
else count = 1;
if(count == 1 || count == 2) list.add(A[i]);
}
for (int i = 0; i < list.size(); i ++ ) {
A[i] = list.get(i);
}
return list.size();
}
}