删除有序数组中的重复项 II
给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素最多出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
双指针
class Solution
{
public:
int removeDuplicates(vector<int>& nums)
{
int len = nums.size();
if (len < 3)
{
//如果数组里元素小于两个,直接返回
return len;
}
int index = 1;
//index指向有效元素的最后一个
for (int i = 2; i < len; i++)
{
if (nums[i] != nums[index - 1])
{
nums[++index] = nums[i];
//追加到有效元素里,index后移
}
}
return index + 1;
}
};