Leetcode # 237:删除链表中的节点[easy]

mac2026-01-24  5

描述

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

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

示例

示例 1:

输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 示例 2:

输入: head = [4,5,1,9], node = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

思路

由于删除链表中的某个节点需要前一项节点,而题目只给了要删除的节点,因此无法常规手段删除,可以通过覆盖来进行删除,即将下一个节点覆盖当前节点,然后删除下一个节点

代码

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public void deleteNode(ListNode node) { ListNode next = node.next; node.val = next.val; node.next = next.next; } }

 

最新回复(0)