0%

remove-duplicates-from-sorted-array-ii

题目描述

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int removeDuplicates(vector<int>& nums) {
int res = nums.size();
if (res < 3)return res;
bool twice = false;
int pre = nums[0];
auto it = nums.begin() + 1;
while( it !=nums.end())
{
if (*it == pre)
{
if (twice)
{
it=nums.erase(it);
res--;
}
else
{
twice = true;
it++;
}
}
else
{
pre = *it;
twice = false;
it++;
}
}
return res;
}