2020-10-18 刪除連結串列的倒數第N個節點

nqcqwer發表於2020-10-18

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

給定一個連結串列,刪除連結串列的倒數第 個節點,並且返回連結串列的頭結點。

示例:

給定一個連結串列: 1->2->3->4->5, 和 n = 2.

當刪除了倒數第二個節點後,連結串列變為 1->2->3->5.

說明:

給定的 n 保證是有效的。

進階:

你能嘗試使用一趟掃描實現嗎?

解題思路

遍歷每個結點存入棧中,最後pop出n個結點,並修改連線關係。這裡設定啞結點防止頭部結點被刪除。

class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        dummyHead = ListNode(next=head)
        node_stack = [dummyHead]
        while head:
            node_stack.append(head)
            head = head.next
        
        for i in range(n):
            node = node_stack.pop(-1)
        
        node_last = node_stack.pop(-1)
        node_last.next = node.next
        return dummyHead.next

 

相關文章