代码随想录算法练习Day6:移除链表元素

题目链接:203.移除链表元素

卡哥视频讲解:手把手带你学会操作链表 | LeetCode:203.移除链表元素

解题思路:创建一个虚拟头节点以及两个指针,如果遍历到匹配的元素,则跳过这个节点,虚拟头节点的下一个就是真正的头节点,创建虚拟头节点,就是为了应对原来的头节点就是我们需要找的节点的情况。

代码示例:

代码逻辑详解:

  1. public ListNode removeElements(ListNode head, int val) {: 这是一个公共方法 removeElements,它接受两个参数:head,表示链表的头节点,val,表示要移除的节点值。

  2. if (head == null) { return head; }: 首先检查头节点是否为空,如果为空,说明链表为空,直接返回头节点即可。

  3. ListNode dummy = new ListNode(-1, head);: 创建一个虚拟节点 dummy,值为 -1,它的下一个节点指向原来的头节点 head。这样做是为了统一处理头节点的情况,方便后续操作。

  4. ListNode pre = dummy;: 创建一个指向当前节点的前一个节点的指针 pre,初始时指向虚拟节点 dummy

  5. ListNode cur = head;: 创建一个指向当前节点的指针 cur,初始时指向头节点 head

  6. while (cur != null) {: 进入循环,遍历链表,直到当前节点 cur 为空时结束循环。

  7. if (cur.val == val) { pre.next = cur.next; }: 如果当前节点的值等于要移除的值 val,则将前一个节点 pre 的下一个节点指向当前节点的下一个节点,即跳过当前节点,实现移除操作。

  8. else { pre = cur; }: 如果当前节点的值不等于要移除的值 val,则将 pre 指向当前节点 cur,继续遍历。

  9. cur = cur.next;: 将当前节点指针 cur 指向下一个节点,继续遍历链表。

  10. return dummy.next;: 返回虚拟节点 dummy 的下一个节点,即移除元素后的链表头节点。

这段代码实现了移除链表中值为 val 的元素,并返回移除元素后的链表头节点。通过使用虚拟节点,可以简化头节点的处理,使得代码更加清晰和简洁。

解题步骤:

1.判断头节点是否为空,如果是空的,则直接返回头节点

2.定义虚拟头节点以及两个新指针

3.while循环判断找出我们需要的节点值,找到了就直接将其删除,找不到就继续遍历

4.最后返回新的头节点,也就是虚拟头节点的下一个。

  • 13
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值