移除元素2

分析

这题核心思想在于快慢指针开始的位置和比较位置。 当我们从 0 开始时,对于 [0,0,1,1,1][0,0,1,1,1] 以及 [0,0,0,1,1][0,0,0,1,1], 我们只能不断修改判断条件去满足这种避免情况。 但如果我们从 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;
}
};
返回文章列表