https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/
思路:双指针(快慢指针),考虑到数组的前2个数一定可以保留,不妨令
l
=
r
=
2
l=r=2
l=r=2,若
n
u
m
s
[
l
−
2
]
=
n
u
m
s
[
r
]
nums[l-2]=nums[r]
nums[l−2]=nums[r],由数组的单调性可知,
n
u
m
s
[
l
−
2
]
nums[l-2]
nums[l−2]已经出现了三次,那么就让快指针一直往后直到找到一个不等于
n
u
m
s
[
l
−
2
]
nums[l-2]
nums[l−2]的
n
u
m
s
[
r
]
nums[r]
nums[r],我们可以把它直接放到
l
l
l上。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int n=nums.size(),l=2,r=2;
while(r<n)
{
if(nums[l-2]!=nums[r])
{
nums[l]=nums[r];
++l;
}
++r;
}
return min(l,n);
}
};