一、题目描述
二、题目分析
题目说:“你不需要考虑数组中超出新长度后面的元素”, 意思就是,你在原数组中进行修改,返回出目标数组的长度,超过这个长度的数组项可以继续留在原数组,长度以内的项就是结果项。解题思路:
- 指向头尾的双指针
- 遇到等于val的项,就拿数组的末尾项覆盖它
- 末尾项搬到前面来了,将尾指针左移一位
- 如果遇到不同于val的项,左指针就+1,考察下一项
- 循环结束的条件是两个指针交叉相遇
var removeElement = (nums, val) => {
let index = 0, last = nums.length - 1
while (index <= last) {
if (nums[index] === val) {
nums[index] = nums[last]
last--
} else {
index++
}
}
return index
}