LeetCode 237. Delete Node in a Linked List (在链表中删除一个点)

时间:2024-04-27 22:37:35

Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.

Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become 1 -> 2 -> 4 after calling your function.


题目标签:Linked List

  题目给了我们一个点,让我们在链表中删除这个点。

  一般来说,要删除一个点,首先想到的是 把这个点的前面一个点 直接 链接到 这个点的 后面一个点 就可以了。

  但是这一题只给了我们要删除的这个点(不会是最后一个点),所以回不到上一个点。

  只要改变一下想法,用下一个点的val 复制到这一个点就可以了,然后把这一个点 链接到 下下个点就可以了。

Java Solution:

Runtime beats 9.42%

完成日期:06/12/2017

关键词:singly-linked list

关键点:把下一个点的val 复制到这一个点

 /**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution
{
public void deleteNode(ListNode node)
{
// copy next node val into this node, then link this node to next next node
ListNode nextNode = node.next;
node.val = nextNode.val;
node.next = nextNode.next; nextNode.next = null; // unlink nextNode to null }
}

参考资料:N/A

LeetCode 题目列表 - LeetCode Questions List

题目来源:https://leetcode.com/