题目链接:移除元素
方式一:
解题思路:
遍历数组,遇到不同于val的项,就直接覆盖到nums数组中,从第一项开始覆盖,到最后,不同的项都安排到了数组的前面。
var removeElement = function (nums, val) {
let index = 0
for (let i = 0; i < nums.length; i++) {
if (nums[i] !== val) {
nums[index] = nums[i]
index++
}
}
return index
};
方式二:
解题思路:
头尾双指针,遇到等于val的项,就用末尾的值覆盖,末尾往前移了,将尾指针左移一位。
遇到不等于val的项,左指针往右移一位。
当两个指针交叉相遇循环结束。
var removeElement = function (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
};
方式三:
解题思路:
splice方法,i要减1
var removeElement = (nums, val) => {
for (let i = 0; i < nums.length; i++) {
if (nums[i]===val) {
nums.splice(i, 1)
i--
}
}
return nums.length
}