题目来源:
80. 删除排序数组中的重复项 II - 力扣(LeetCode)
思路:
特殊情况:
数组的长度为0,直接输出0;
一般情况:
j为慢指针,i为快指针,当数组当前元素不等于前一个元素/等于前一个元素a的次数为1(特殊之处:下一个元素比较时仍与a比较,因为至多只能出现两个重复项)时复制nums[i]到nums[j](用cnt计数(小于等于1的情况均成立),最后返回数组长度。
AC代码:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size()==0)
return 0;
else
{
int cnt=0;
int j=1;
for(int i=1;i<nums.size();i++)
{
if(nums[i]==nums[i-1])
cnt++;
else
cnt=0;
if(cnt<=1)
{
nums[j]=nums[i];
j++;
}
}
return j;
}
}
};