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.
和26题差不多就是这次可以存在重复一次的数, 这样的话可以多加一个变量count记录当前元素出现了多少次。当count<2的时候,相当于不重复的情况处理,然后更新count的值,当出现不重复的时候就初始化count为1.
代码如下:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if (nums.size() <= 2) return nums.size();
int end = 0;
int count = 1;
for (int i = 1; i < nums.size(); i++) {
if (nums[end] != nums[i]) {
end++;
nums[end] = nums[i];
count = 1;//此时重置count的值为1
}
else {
if (count < 2)
{
end++;
nums[end] = nums[i];
count++;//此时更新count的值
}
}
}
return end + 1;//返回长度是下标的值加一
}
};