题目:移除排序数组中多余的元素,使每个元素最多出现两次;
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].
题解:使用双下标,一个下标用来对重复次数少于等于2的数赋值(原数组中),另一个用来遍历数组,另外用一个变量count跟踪元素出现的次数。
public int removeDuplicates(int[] A) {
if(A == null||A.length == 0)
return 0;
int count =1;
int size=0;
for(int i=1;i<A.length;i++)
{
if(A[i]!=A[size])
{
A[++size]=A[i];
count=1;
}
else
{
if(count == 1)
{
A[++size]=A[i];
count++;
}
}
}
return ++size;//元素个数 == size+1;
}