LeetCode 面试题02.03 删除中间的节点

这篇博客探讨了一道关于如何在无法遍历整个链表的情况下删除单向链表中间节点的问题。关键在于只能访问给定的节点,并且需要在一次操作中完成删除。解决方案是让当前节点的值等于其下一个节点的值,然后跳过下一个节点,实现逻辑上的删除。代码实现简洁高效,通过node.val = node.next.val; 和 node.next = node.next.next;即可完成操作。
摘要由CSDN通过智能技术生成

在这里插入图片描述
怎么说呢,这道题不难,但重点在于理解。不然就像我一样gg(想了好久才想通,已哭晕在厕所)觉得需要记录一下这道题。

  • 分析:

删除单向链表中间的某个节点,既不是头也不是尾(这个非常关键),且只能访问该节点(这又是一个坑,说明不能遍历),而且传入的参数是node,而不是head

  • 解法

既然只能访问当前节点,那就只好出此下策了。杀不掉我,我就变成你,然后再干掉你,就等于杀死了自己。node.val=node.next.val;node.next=node.next.next;

下面结合图来理解一下
在这里插入图片描述
在这里插入图片描述
代码如下:

class Solution {
    public void deleteNode(ListNode node) {
        node.val=node.next.val;
        node.next=node.next.next;      
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值