LeetCode 19.刪除鏈表的倒數第N個節點(Python)


題目:

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

示例:

給定一個鏈表: 1->2->3->4->5, 和 n = 2.

當刪除了倒數第二個節點后,鏈表變為 1->2->3->5.

說明:

給定的 n 保證是有效的。

進階:

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

 

解答:

 

方法一:使用前后指針。前指針先走n步,然后前、后指針同時走,當前指針走到節點尾時,后指針剛好走到要刪除的節點。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def removeNthFromEnd(self, head: 'ListNode', n: 'int') -> 'ListNode':
        h = ListNode(0)
        h.next = head
        before_node, back_node = h, h

        for _ in range(n + 1):
            before_node = before_node.next

        while before_node != None:
            before_node = before_node.next
            back_node = back_node.next

        back_node.next = back_node.next.next
        return h.next

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM