- 分析
双指针解法,slow指向的是前面以满足要求的带插入位置,fast遍历指针。
- 代码
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int slow = 0, fast = 0;
int size = nums.size();
int num = 0;
while(fast < size){
if(0 == slow){
nums[slow] = nums[fast];
slow++;
fast++;
num++;
continue;
}
if(nums[fast] != nums[slow - 1]){//不相等的情况
nums[slow] = nums[fast];
slow++;
num = 1;
}else if(nums[fast] == nums[slow - 1] && num < 2){//相等的情况
nums[slow] = nums[fast];
slow++;
num++;
}
fast++;
}
return slow;
}
};