LeetCode 19 刪除鍊錶的倒數第N個節點

2022-03-26 04:27:15 字數 1238 閱讀 9380

difficulty:中等

給你乙個鍊錶,刪除鍊錶的倒數第n個結點,並且返回鍊錶的頭結點。

高階:你能嘗試使用一趟掃瞄實現嗎?

示例 1:

輸入:head = [1,2,3,4,5], n = 2

輸出:[1,2,3,5]

示例 2:

輸入:head = [1], n = 1

輸出:

示例 3:

輸入:head = [1,2], n = 1

輸出:[1]

solution

快慢指標方法,讓快指標先走n步,然後快指標和慢指標同時走,此時快指標的距離為n,當快指標將要到達鍊錶末尾的時候,慢指標的下乙個節點即為需要刪除的節點。思路挺巧妙的,有點意思。

# definition for singly-linked list.

# class listnode:

#     def __init__(self, val=0, next=none):

#         self.val = val

#         self.next = next

class solution:

def removenthfromend(self, head: listnode, n: int) -> listnode:

if not head:

return none

slow, fast = head, head

for _ in range(n):

fast = fast.next

# 刪除第乙個節點

if not fast:

return head.next

else:

while fast.next:

fast = fast.next

slow = slow.next

slow.next = slow.next.next

return head

LeetCode 19 鍊錶(160)

1 如圖,鍊錶是一種非常常用的資料結構 煉表頭 指向第乙個鍊錶結點的指標 鍊錶結點 鍊錶中的每乙個元素,包括 1 當前結點的資料,2 下乙個結點的位址 鍊錶尾 不再指向其他結點的結點,其位址部分放乙個null,表示鍊錶到此結束。2 鍊錶可以動態地建立 動態地申請記憶體空間 int pint new ...

鍊錶 LeetCode19刪除鍊錶中的第N個節點

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?分析 看到這個問題,第一反應,先求長度,再找節點,看一下高階,有...

Leetcode 19 刪除鍊錶的第N個節點

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?兩次遍歷的演算法思路 第一遍歷從頭結點開始來計算鍊錶的長度,然後...