↓快轉到主要內容
  1. LeetCode/

LeetCode 237: Delete Node in a Linked List

·1 分鐘· ·
LeetCode Medium Linked-List
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: medium 第一次嘗試:2022-08-22

  • 提交紀錄:Accepted(一次通過)

解題思路
#

只給要刪的節點、拿不到前一個,所以沒辦法讓前一個跳過它。換個方式:把下一個節點的值複製到自己,再刪掉下一個節點(Linked List「其他」)。題目保證要刪的不是最後一個,所以下一個一定存在。

我的解法
#

class Solution:
    def deleteNode(self, node):
        node.val = node.next.val
        node.next = node.next.next

複雜度
#

時間 O(1),空間 O(1)。

要特別避免的錯誤
#

  • 這招只在「不是最後一個節點」時可行。

面試口說整理
#

拿不到前一個節點就沒辦法真的刪掉自己,所以我把下一個節點的值複製過來,再跳過下一個節點,效果等同刪掉自己。時間 O(1)。

相關文章

LeetCode 2: Add Two Numbers
·1 分鐘
LeetCode Medium Linked-List Math Recursion
LeetCode 2 解題筆記:位數是反著存的,從頭開始逐位相加帶進位;迴圈跑到兩條都走完而且沒有進位為止
LeetCode 234: Palindrome Linked List
·1 分鐘
LeetCode Easy Linked-List Two-Pointers Stack Recursion
LeetCode 234 解題筆記:快慢指針找中點,反轉後半段,再從兩端往中間比;O(1) 額外空間
LeetCode 235: Lowest Common Ancestor of a Binary Search Tree
·1 分鐘
LeetCode Medium Tree Depth-First-Search Binary-Search-Tree Binary-Tree
LeetCode 235 解題筆記:p、q 都比節點小就往左,都比節點大就往右,否則(一邊一個或其中一個就是自己)這個節點就是 LCA
LeetCode 203: Remove Linked List Elements
·1 分鐘
LeetCode Easy Linked-List Recursion
LeetCode 203 解題筆記:頭節點也可能要刪,用 dummy head 讓每次刪除都變成刪 cur.next;刪完不要前進
LeetCode 206: Reverse Linked List
·1 分鐘
LeetCode Easy Linked-List Recursion
LeetCode 206 解題筆記:prev / cur / nxt 三個指標,先記住下一個,再把 cur.next 指回 prev
LeetCode 141: Linked List Cycle
·1 分鐘
LeetCode Easy Hash-Table Linked-List Two-Pointers Floyds-Cycle-Finding-Algorithm
LeetCode 141 解題筆記:Floyd 判圈,快指針一次兩步、慢指針一次一步,有環就一定會相遇;兩個都要從自己的位置往前走