- 双指针一定要理解好slow 和 fast的指针的含义
- slow之前的(不包含slow)为已经处理好的数据, 循环不变量一定要定义清楚, 而且在遍历的过程中不能改变
- fast指针只是个遍历用的指针
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length <= 2) {
return nums.length;
}
int fast = 2;
int slow = 2;
while (fast < nums.length) {
// 错误的比较了fast 和 fast - 1 以及fast - 2的数字,其实这是没有意义的
if (nums[fast] != nums[slow-1] || nums[fast] != nums[slow-2]) {
nums[slow] = nums[fast];
slow++;
fast++;
} else {
fast++;
}
}
return slow;
}
}