题目


知识点
思路
此题使用双指针法,O(n)的时间复杂度,拼速度的话,可以剪剪枝。
注意题目中:不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
双指针法,动画如下:

错误
返回的是删除重复元素后,数组的新长度
题解
cpp
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size() == 0){
return 0;
}
int slow = 0;
int fast = 1;
while(fast < nums.size()){
if(nums[slow] != nums[fast]){//不等就是出现不重复的元素
nums[++slow] = nums[fast];//放到新位置
}
fast++;
}
return slow + 1;
}
};