1. 程式人生 > 實用技巧 >19。刪除連結串列倒數第N個節點

19。刪除連結串列倒數第N個節點

class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
# 這道題還是很簡單的,我們只需要兩遍的遍歷,找到連結串列中倒數第n的前一個,
# 然後把n的前一個節點的next指向n的下一個節點,就可以了。
# 這裡需要注意的是,如果連結串列的長度為1,我們好辦了。
# 因此這裡我們定義一個連結串列的節點,然後讓他指向頭結點。
# 這樣我們就能實現刪除第一個節點了。
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
# 判斷連結串列是否為空。根據題意,這個判斷可以不寫,
# 因為題中說明了n是有效的數字
if not head :return None
# 定義一個節點,然後把它指向頭結點。
node = ListNode(0)
node.next = head
length = 0
# 遍歷出連結串列的長度。
while head:
length += 1
head = head.next
# 找到倒數第n各節點前邊那個。
node1 = node
for i in range(length - n):
node1 = node1.next
# 然後把n刪除。
node1.next = node1.next.next
return node.next