这是悦乐书的第197次更新,第204篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第60题(顺位题号是235)。编写一个函数来删除单链表中的节点(尾部除外),只允许访问该节点。例如:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

鉴于链表 - head = [4,5,1,9],如下所示:

4 - > 5 - > 1 - > 9

输入:head = [4,5,1,9],node = 5

输出:[4,1,9]

说明:您将获得值为5的第二个节点,即链表调用你的函数后应该变成4 - > 1 - > 9。


输入:head = [4,5,1,9],node = 1

产出:[4,5,9]

说明:您将获得值为1的第三个节点,即链表在调用你的函数后应该变成4 - > 5 - > 9。


注意

  • 链表至少有两个元素。

  • 所有节点的值都是唯一的。

  • 给定节点不是尾部,它始终是链表的有效节点。

  • 不要从你的功能中返回任何东西。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 解题

传入的参数node,是要删除掉的节点,也就是需要跳过node。先将当前节点的值用其下一个节点的值覆盖掉,然后node的下一个节点指向其下下个节点。

public void deleteNode(ListNode node) {
    node.val = node.next.val;
    node.next = node.next.next;
}


03 小结

算法专题目前已连续日更超过一个月,算法题文章60+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄