解法:
还是采用快慢指针的办法, 跟 26 题相似
快指针先去遍历整个数组,找到跟 val 不相等的值,就告诉慢指针,你存一下这个东西
慢指针就听快指针的,存完后,它往前爬一步,准备存下一个
所以慢指针存的都是不相等的
最后返回的时候,慢指针往前爬了多少步,就返回多少,比如最后 slow 是 7,从 0 - 7,爬了 7步,慢指针存的东西只是从 nums[0] 到 nums[6]
/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function(nums, val) {
if(nums.lenght < 1) return nums
let slow = 0, fast = 0
while(fast < nums.length) {
// 快指针找到跟 val 不相等的,就告诉慢指针,存一下
if(nums[fast] !== val) {
nums[slow] = nums[fast]
// 慢指针存完后,往前一步
slow ++
}
fast ++
}
// 慢指针往前走了几步,长度就是几
return slow
};