请选择 进入手机版 | 继续访问电脑版

Leetcode 203.移除链表中的所有元素

[复制链接]
漫舞飞天 发表于 2021-1-2 12:02:48 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

链表的题我们如果没思路的话绘图就完事了。链表中我们需要关注三个主要的位置,头,尾,和中任意位置
下面我们来绘图表明一下。



我们可以使用双指针来管理这个问题,cur代表当前节点(从head.next开始),prev代表当前节点的前驱(prev=head),(我们先不思量第一个节点)我们让cur一直往下走,每走一次判断一下当前cur.val是否即是传参传入的value。如果相等的令prev.next=cur.next;(就相当于删除了这个值相等的节点),然后接着走(cur=cur.next),如果不想的的话需要先更新prev的值(prev=cur),再接着走(cur=cur.next),直到全部遍历完竣事。到这里我们另有头结点没有判断,我们在判断一下头结点的val是否与传入的val即可
详细代码如下:
  1. class Solution {    public ListNode removeElements(ListNode head, int val) {        if(head==null)        {            return null;        }        ListNode prev=head;        ListNode cur=head.next;        while(cur!=null)        {              if(cur.val==val)              {                  prev.next=cur.next;                  cur=cur.next;              }else{                                 prev=cur;                  cur=cur.next;              }        }        if(head.val==val)        {            head=head.next;        }        return head;    }}
复制代码
来源:https://blog.csdn.net/qq_45661125/article/details/112059608
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )