分析
这题核心思想在于快慢指针开始的位置和比较位置。
当我们从 0 开始时,对于 以及 ,
我们只能不断修改判断条件去满足这种避免情况。
但如果我们从 2 开始,则只需要判断 slow - 2 != fast
的情况即可。
解答
class Solution {public: int removeDuplicates(vector<int> &nums) { auto n = nums.size(); if (n < 2) return n; auto slow = 2;
for (auto fast = 2; fast < n; ++fast) { if (nums[fast] != nums[slow - 2]) { nums[slow++] = nums[fast]; } }
return slow; }};