力扣27-移除元素【学习笔记】

49 阅读1分钟

问题:给定一个数组,移除数组中的所有等于目标值的值,要求原地移除

难点:原地移除

方法:快慢指针

当快指针所指元素不是目标值时,赋值给慢指针

循环最后慢指针所指元素为移除元素后有效数组的最后一位

快指针指向最后

var removeElement = function(nums, val) {
    let left = 0
    for(let right=0;right<nums.length;right++){
        if(nums[right]!=val){
            nums[left] = nums[right]
            left++
        }
    }
    return left
};

暴力解法:

每遇到一个目标元素,就把后面所有元素往前移动(覆盖了当前元素), 同时i-- size--

var removeElement = function(nums, val) {
    let size = nums.length
    for(let i=0;i<size;i++){
        if(nums[i]==val){
            for(let j=i+1;j<size;j++){
                nums[j-1] = nums[j]
            }
            i--
            size--
        }
    }
    return size
};