给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用O(1)额外空间原地修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

由题目可知的条件和限制:
1.原地修改
2.不能使用额外的数组空间,空间复杂度为 O(1)
3.元素的顺序可以改变

主要思路:将不等于val的值往前放,元素交换位置~

双指针

function removeEle(arr,val){
    var j = 0  // 定义变量,慢指针
    var i = 0  // 快指针
    for(;i<arr.length;i++){
        if(arr[i]!=val){
        // 如果当前元素不等于指定元素,将这个元素赋值给慢指针指向的元素
            arr[j]=arr[i]
            j++
        }
    }
    return j
}

好好学习
7 声望2 粉丝

文章是自己在学习或踩到坑的过程中查找资料的总结,以便后期自己复习使用