原题:
解决方法:
代码:
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 ofnums being 1
, 1
, 2
, 2
and3
. It doesn't matter what you leave beyond the new length.
解决方法:
用一个变量保存不符合要求的数的个数。
从第三个开始扫描数组,重复超过两次后直接加1。如果不是,则将该数拷贝到数组的前面。
最后返回的是符合要求的数的个数。
代码:
int removeDuplicates(vector<int>& nums) {
int n = nums.size(), count = 0;
for(int i = 2; i < n; i++){
if (nums[i] == nums[i-count-2])
++count;
else
nums[i-count] = nums[i];
}
return n - count;
}