LeetCode 27. 移除元素 题解

题目链接:LeetCode 27. 移除元素
本题大意是要对一个数组进行原地删除数值等于 val 的元素。
双指针算法:
通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
快指针(p指针):寻找新数组的元素 ,新数组就是不含有目标元素的数组
慢指针(q指针):指向更新 新数组下标的位置
当遇到与val 相等的元素时,p指针继续往后移动,q指针不动,这样来更新原数组中的元素。
代码如下:

func removeElement(nums []int, val int) int {
    // 双指针算法
    p:=0
    q:=0
    for n:=len(nums); p<n ;p++{
        if nums[p] == val{
            continue
        }else{
            nums[q] = nums[p]
            q++
        }
    }
    return q
}

简化一下:

func removeElement(nums []int, val int) int {
    length:=len(nums)
    res:=0
    for i:=0;i<length;i++{
        if nums[i]!=val {
            nums[res]=nums[i]
            res++
        }
    }
    nums=nums[:res]
    return res
}
posted @ 2023-05-05 15:43  小星code  阅读(25)  评论(0)    收藏  举报