iT邦幫忙

1

Leetcode Challenge: Delete Node in a Linked List (6/2)

今天的題目是本來的 No.237 (https://leetcode.com/problems/delete-node-in-a-linked-list/),把 Linked List 中某個 Node 刪除掉。

https://ithelp.ithome.com.tw/upload/images/20200604/20127688FDVQVWLZjG.png

基本上一般人看到這題應該會想說這題也太廢了吧!大概是 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 = None

class 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

https://ithelp.ithome.com.tw/upload/images/20200604/201276885OEn3xwqSi.png

See YA!

歡迎追蹤我的 Medium 囉!
https://medium.com/@ryanyang1221


尚未有邦友留言

立即登入留言