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

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

示例:

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

當刪除了倒數第二個節點後,鏈表變爲 1->2->3->5.
說明:

給定的 n 保證是有效的。

 

思路:使用一遍掃描實現,定義兩個指針p和q,現將p向後移動n+1位使得p和q之間的距離爲n,之後p和q指針同時向後移動,直至p到達末尾,刪除q的下一個節點即可

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

class Solution(object):
    def removeNthFromEnd(self, head, n):
        """
        :type head: ListNode
        :type n: int
        :rtype: ListNode
        """
        dummyHead = ListNode(0)
        dummyHead.next = head

        p = dummyHead
        q = dummyHead
        for i in range(n + 1):
            q = q.next

        while q != None:
            p = p.next
            q = q.next
        
        delNode = p.next
        p.next = delNode.next
        delNode.next = None

        return dummyHead.next

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章