➣ Reading Time: 4 minutes

題目出處

https://leetcode.com/problems/remove-nth-node-from-end-of-list/

難度

Medium

題目分類

LinkedList, TwoPointers

個人手繪解法筆記 (解法重點)

大概念 – TwoPointers

我們可以想像成有兩個指標,一個跑比較快,一個跑比較慢

  • 跑比較快的幫我們去找 head
  • 跑比較慢的幫我們定位要刪除的 node

所以跑比較快的與跑比較慢的會固定間距「n」

正常 case

遍歷停止條件

我們留意最後一個 front 停下來的地方,因為要固定間距 n,
所以當最後搜尋到 front.next 沒有東西時就應該要停下

刪除方法

而刪除的方法,則是靠 back 所在位置的 next 替換成 next.next

你可能會想問為什麼不能在 4 ? ,因為「只有 3 的 next 才能連接到 5

特殊 case

只有一個值時,front 會跑到空值,所以我們判斷 front 為空,
則回傳 head.next

示意圖

個人範例程式碼

class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        back = front = head
        for _ in range(n):
            front = front.next

        if not front:
            return head.next

        while(front.next):
            front, back = front.next, back.next

        # print(back.val)
        back.next = back.next.next
        return head

Reference

https://leetcode.com/problems/remove-nth-node-from-end-of-list/discuss/8802/3-short-Python-solutions

⭐Python leetcode 相關文章整理⭐:
⭐Leetcode 解題紀錄⭐:難度Tag
⭐面試最經典 Top 75 題⭐:
1.【Leetcode】python - [1] Two Sum 兩數之和 個人手繪解法筆記 (只講解法重點, 內含範例程式碼)#Easy#Array #HashTable
3.【Leetcode】python - [3] Longest Substring Without Repeating Characters 個人手繪解法筆記 (只講解法重點, 內含範例程式碼) #Medium#HashTable #TwoPointers #String #SlidingWindow
5.【Leetcode】python - [5] Longest Palindromic Substring 個人手繪解法筆記 (只講解法重點, 內含範例程式碼) #Medium#String #DP
11.【Leetcode】python - [11] Container With Most Water 個人手繪解法筆記 (只講解法重點, 內含範例程式碼) #Medium#Array #TwoPointers
15.【Leetcode】python - [15] 3Sum 三數之和 個人手繪解法筆記 (只講解法重點, 內含範例程式碼) #Medium#Array #TwoPointers
48.【Leetcode】python - [48] Rotate Image 旋轉矩陣 個人手繪解法筆記與解題思考建議 (只講解法重點, 內含範例程式碼)#Medium (但我覺得很難)#Array
104.【Leetcode】python - [104] Maximum Depth of Binary Tree 個人手繪解法筆記 (只講解法重點, 內含範例程式碼) #Easy#Tree #DFS #Recursion
⭐Leetcode 小技巧⭐:
1.【Python】python 測試程式 – 利用 doctest 測試 python testcase 的優雅寫法,適用於 leetcode (doctest in function,搭配 function 的用法)
2.【Leetcode】python – 利用 doctest 測試 leetcode python testcase 的優雅寫法 (doctest in class,搭配 class 的用法)
⭐【喜歡我的文章嗎? 幫忙按讚除了鼓勵外,我也會將部分所得捐出!
如果喜歡我的文章,請幫我在下方【按五下Like】 (Google, Facebook 免費註冊),會由 「LikeCoin」 贊助作者鼓勵繼續創作,扣除掉網站本身經營的成本 (可惜目前還是虧本的),我會將 【50% 收益全部捐出】 並公開發文,讀者們「只需幫忙按讚,完全不用出錢」哦!

likecoin-steps