题目
代码
/**
* 快慢指针
* 快指针在前面探路,慢指针在后面
* 当快指针和慢指针指向的元素相同时,快指针继续走;
* 当快指针和慢指针指向的元素不同时,慢指针往前走一步,
* 并把快指针指向的值赋值给慢指针指向的值,相当于把大一点的数往前挪了,
* 最后快指针往前走一步
*/
var removeDuplicates = function(nums) {
if (!nums.length) return 0;
let fast = 1, slow = 0;
while (fast < nums.length) {
if (nums[fast] === nums[slow]) {
fast++;
} else {
slow++;
nums[slow] = nums[fast];
fast++;
}
}
return slow + 1;
};
参考资料
- 如何去除有序数组的重复元素
- 贴张图,有助于理解,图源为上面的链接,来自labuladong大佬