题目
代码
/**
* 快慢指针法
* 快指针往前探路,看是否值为val
* 如果值真为val,快指针依旧往前走一步;
* 如果值不为val,把快指针指向的值赋值给慢指针,快慢指针都往前走一步。
*
* PS: 这道题是先赋值再让快慢指针都往前走,
* 循环走完,最后去掉值为val的数组是nums[0...slow-1]
*/
var removeElement = function(nums, val) {
let len = nums.length;
if (!len) return 0;
if (len === 1) {
if (nums[0] === val) {
nums = [];
return 0;
} else {
return 1;
}
}
let slow = 0, fast = 0;
while (fast < len) {
if (nums[fast] === val) {
fast++;
} else {
nums[slow] = nums[fast];
slow++;
fast++;
}
}
return slow;
};