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;
}
LeetCode 80:Remove Duplicates from Sorted Array II
原文:http://blog.csdn.net/sunao2002002/article/details/46507173