Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
For example,
Given sorted array nums = [1,1,1,2,2,3]
,
Your function should return length = 5
, with the first five elements of nums being 1
, 1
, 2
, 2
and 3
. It doesn't matter what you leave beyond the new length.
此题要求数组中每个元素出现的个数不大于两次。所以需要加一个计数器来统计每个元素出现的次数。
代码如下:
int removeDuplicates2(vector<int>& nums) {
int length = nums.size();
if (length == 0)
return 0;
int j=0;
int times = 1;
for (int i=1; i<length; i++)
{
if (nums[i] != nums[j])
{
nums[++j] = nums[i];
times = 1;
}else{
times++;
if (times == 2)
{
nums[++j] = nums[i];
}
}
}
return j+1;
}