LeetCode第203题—移除链表元素

本次写的题目是移除链表元素​​​​​​​,为LeetCode里面的题目,让我们来康康是如何解出这道题目的吧,各位尚没有思路的小伙伴可以跟随着博主的解题思路一步步来,感受一下😎

🌱分析阶段

第一眼见该题目,是一个链表中的某一个值的所有元素都给移除掉,于是按照题目,我们可以画出下面的情况👇:

情况①相对来说是较好解决的,我们只需要用到两个变量,创建两个节点,一个命名为del,另一个命名为cur,del作为探针的角色,然后cur紧随其后,当del探到了要删的元素,便将cur的next变为del的下一个节点,就如下图一样👇:

在要删除元素为23的情况下:

但如果要将连续的要删除元素给跳过,我们要让cur在del碰到要删元素的时候,将这个元素删除,即让cur的next变为del的next,链接del的下一个节点;但当del不为要删元素的时候,我们要及时把cur给跟上。然后del继续往后探索👇:

以上便是分析阶段全部了~接下来请看代码阶段😎 


🌱代码阶段

整个题目中最重要的是要做到  当遇到要删元素的时候将del的next赋给cur的next  和  当没有遇到要删元素的时候cur要跟上del  ,这两种情况是相反的情况,所有我们可以用if  else语句来实现:

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        ListNode cur = head;
        ListNode del = cur;
        while(del!=null){
            if(del.val==val){
                cur.next = del.next;
                del = del.next;
            }else{
                cur = del;
                del = del.next;
            }
        }
        return head;
    }
}

通过以上操作,我们就能够轻松地将要删的单独元素或连续要删元素都给删去了😎下面来跑一遍试一下👇:

😫 😫 😫 😫 😫 😫 怎么会报错!!!!

看了最终输出的结构,按原本的预期应该是一个没有,现在确还剩下一个7🤔咋回事。

将这个例子放入我们的代码中自己过一遍后发现原来少了一种情况:当开头也有要删元素的时候

所以,博主针对该情况又在代码最后加多了一段代码来处理该情况:

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        ListNode cur = head;
        ListNode del = cur;
        while(del!=null){
            if(del.val==val){
                cur.next = del.next;
                del = del.next;
            }else{
                cur = del;
                del = del.next;
            }
        }
        if(head!=null&&head.val==val){
            head = head.next;
        }
        return head;
    }
}

 再跑一遍逝逝😎

 nice😎✨


以上!便是全部的啦😎

又是收获满满的一天~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值