1.题目
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii
2.解题思路
设置快慢指针rigth、left.
nums[right]==nums[left] 并且nums[right]==nums[left-1]时,说明是重复元素,不用保留;
不相等时说明是不是重复元素,需要保留向前移动。
3.代码
class Solution {
public:
int removeDuplicates(vector<int>& nums){
int left=1,right=2;
int n=nums.size();
if(n<2){
return n;
}
for(right;right<n;right++){
if(nums[right]==nums[left] and nums[right]==nums[left-1]){
continue;
}
nums[++left]=nums[right];
}
return left+1;
}
};