Remove Duplicates from Sorted Array II
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]
.
只要能记住重复出现多少次,就可以了。
增加一个c记录,出现两次的时候,继续出现的数值就跳过,不填写了。
很简单的一道题目。
class Solution { public: int removeDuplicates(int A[], int n) { if (n == 0) return 0; int i = 0, j = 1, c = 1; for ( ; j<n; j++) { if (A[j] == A[j-1]) c++; else c = 1; if (c <= 2) A[++i] = A[j]; } return i+1; } };
//2014-2-12 update
int removeDuplicates(int A[], int n)
{
int i = 1, j = 1, c = 0;
for (; j < n; j++)
{
if (A[j] != A[j-1])
{
c = 0;
A[i++] = A[j];
}
else if (!c)
{
c++;
A[i++] = A[j];
}
}
return n? i:0;
}