今天的题目是本来的 No.237 (https://leetcode.com/problems/delete-node-in-a-linked-list/),把 Linked List 中某个 Node 删除掉。
基本上一般人看到这题应该会想说这题也太废了吧!大概是 Linked List 的 Hello World 等级题目,不过不过,还是有一点点有趣的~
一般删除 Linked List 中某个节点,可能会给你 Head,然后要你找到某个 Node 的 Value 是符合的并删除,那么我们就是从 Head 一路找到该 Node,并且把该 Node 的前一个 Node 的 Next 指向该 Node 的 Next。然而这题只给你要删除的 Node 并没有给你 Head,而且又是 Singly (如果是 Doubly 还可以透过 prev 来得知前一个 Node),该怎么办?其实只要稍微动动脑三秒钟也是可以想出来的。
让我们来看 Code,思路上就是让这个要被删除的 node
去抓交替,抓的是谁呢?就是 node.next
。把 node.next
的 Value (node.next.val
) 变到自己身上 (node.val
),然后 node.next
指向 node.next.next
,就这样无声无息地把下一个 Node 给干掉了,嘿嘿!(所以其实剉咧等的是 node.next
而不是 node
lol)
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def deleteNode(self, node): """ :type node: ListNode :rtype: void Do not return anything, modify node in-place instead. """ node.val, node.next = node.next.val, node.next.next
See YA!
欢迎追蹤我的 Medium 啰!
https://medium.com/@ryanyang1221