leetcode 移除元素

文章介绍了如何使用双指针技巧解决LeetCode上的一个问题,即在一个整数数组中移除所有等于给定值的元素,展示了两种不同的实现方法,强调了快指针跳过和慢指针覆盖的思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class Solution {
    public int removeElement(int[] nums, int val) {
      int fid=0,sid=0;
        while(fid < nums.length){
            while(fid < nums.length && nums[fid] == val)
            {
                fid++;
            }
            if(fid == nums.length)
                return sid;                
            nums[sid] = nums[fid];
            fid++;
            sid++;
        }
        return sid;
        //上面代码思想上是对的。。但是写的太丑了!
        int sid = 0,fid = 0;
        for(;fid<nums.length;fid++){
            if(nums[fid] != val){//上面我写的就是等于val的情况,但是等于的时候
            //等于的时候就是fid++罢了,for循环就是fid++,所以我写了不等于val的情况
                nums[sid] = nums[fid];
                sid++;
            }
        }
        return sid;
    }
}

双指针,挺好想的,快指针用来跳过指定元素,慢指针用来覆盖

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值