这道题也是让删除数组里的重复元素,和I不同在于它允许存在两个相同元素,所以这道题必须用一个count来记录,直到count>2了才不合法
public int removeDuplicates(int[] A) {
if (A == null || A.length == 0)
return 0;
int count = 1;
int index = 1;
for (int i = 1; i < A.length; i++) {
if (A[i] == A[i - 1]) {
count++;
if (count > 2)
continue;
} else
count = 1;
A[index++] = A[i];
}
return index;
}
目标同样是把A[index]=A[i]; 也就是说A[index]是合法位置,要把数组里的每个元素都放在里面。
如果不合法,continue,合法,放进去就可以了。不合法的条件是count必须大于2。
至于为什么index要从1开始,因为0这个位置永远都是合法的。
最后不要忘记了index++。