Leetcode 热题 HOT 100 (python)

[leetcode] 19. 删除链表的倒数第N个节点

2020-01-22  本文已影响0人  霞客环肥

难度:Medium.

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.

解析:
这里的相关标签是:链表,双指针.

这道题有2种解法:两次遍历算法,一次遍历算法。

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
        """
        dummy = ListNode(0)
        dummy.next = head
        
        p1 = p2 = dummy
        
        for i in range(n):
            p1 = p1.next
            
        while p1.next:
            p1 = p1.next
            p2 = p2.next
            
        p2.next = p2.next.next
        
        return dummy.next
上一篇 下一篇

猜你喜欢

热点阅读