思路:参照评论中的天秀解法,官方题解比较绕,不如这个好;数组删除元素一定要考虑到覆盖法,nums[i++]=n
;
class Solution {
public:
int removeDuplicates(vector<int> &nums)
{
int len = nums.size();
if (len <= 2)
return len;
int i = 0;
for (auto n : nums)
{
if (i < 2 || nums[i - 2] < n) //保证每个元素最多出现两次,出现多次的直接覆盖
{
nums[i++] = n;
}
}
return i;
}
};