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].
int removeDuplicates(int A[], int n) {
if (n == 1)
return 1;
int last = A[0];
int count = 0;
int Dup_count = 1;
for (int cur = 1; cur < n; ++cur)
{
if (A[cur] == last){
if (Dup_count >= 2)
count++;
else
A[cur - count] = A[cur];
Dup_count++;
}
else
{
Dup_count = 1;
last = A[cur];
A[cur - count] = A[cur];
}
}
return n - count;
}
本文介绍了一种算法,该算法将一个已排序数组中的每个元素最多保留两个重复实例,其余实例则被移除。例如,对于输入数组 [1,1,1,2,2,3],经过处理后的数组变为 [1,1,2,2,3],长度为5。文章提供了一个C语言实现的示例。
1038

被折叠的 条评论
为什么被折叠?



