237. 删除链表中的节点


LeetCode  题解 | 237. 删除链表中的节点

237. 删除链表中的节点 (点击查看题目)


​题目描述

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。

现有一个链表 -- head = [4,5,1,9],它可以表示为:

LeetCode  题解 | 237. 删除链表中的节点

示例 1:

LeetCode  题解 | 237. 删除链表中的节点


示例 2:

LeetCode  题解 | 237. 删除链表中的节点

说明:

  • 链表至少包含两个节点。
  • ​链表中所有节点的值都是唯一的。
  • 给定的节点为非末尾节点并且一定是链表中的一个有效节点。
  • 不要从你的函数中返回任何结果。


解决方案

与下一个节点交换

从链表里删除一个节点 node 的最常见方法是修改之前节点的 next 指针,使其指向之后的节点。

LeetCode  题解 | 237. 删除链表中的节点

因为,我们无法访问我们想要删除的节点 之前 的节点,我们始终不能修改该节点的 next 指针。相反,我们必须将想要删除的节点的值替换为它后面节点中的值,然后删除它之后的节点。

LeetCode  题解 | 237. 删除链表中的节点

LeetCode  题解 | 237. 删除链表中的节点

LeetCode  题解 | 237. 删除链表中的节点

因为我们知道要删除的节点不是列表的末尾,所以我们可以保证这种方法是可行的。


Java 实现

LeetCode  题解 | 237. 删除链表中的节点

复杂度分析

时间和空间复杂度都是:O(1)。



分享到:


相關文章: