给你一个有序数组 nums
,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int counter=2;
if (nums.size()<2){
counter=nums.size();}
else{
for(int i=2;i<nums.size();i++){
if (nums[i]!=nums[counter-2])
nums[counter++]=nums[i];
}
}
return counter;
}
};
代码思路为,设置记录阈值2,从数组中当前元素遍历是否出现2个以上,将阈值以下的元素记录,超出删除。同时要注意测试用例中有单元素数组存在,因此不超过阈值2的数组直接输出即可,满足题目要求。