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]
.
index即新数组的长度
先确定好第一个重复3次元素的位置,然后和Remove Duplicates中的一样,替换的同时,若下一个也相同,则替换。
代码:
class Solution { public: int removeDuplicates(int A[], int n) { if(A==NULL||n==0) return 0; if(n<=2) return n; int index; int count=0;int i; for(i=1;i<n;++i) { if(A[i]==A[i-1]) { ++count; if(count==2) break; }else{ count=0; } } if(i==n) return i; index=i; for(int i=index;i<n;++i) { if(A[i]!=A[i-1]) { A[index]=A[i]; ++index; if(i!=n-1&&A[i]==A[i+1]){A[index]=A[i+1];++index;++i;} } } return index; } };