Leetcode做题日记:19. 删除链表的倒数第N个节点(PYTHON)

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。

res=ListNode(0)
        res.next=head
        l1=res
        l2=res
        for i in range(n):
            l1=l1.next#先执行n次
        while l1.next:#执行L-n次
            l1=l1.next
            l2=l2.next #变相执行n次
        l2.next=l2.next.next #已到第n个节点,跨过去就是了
        return res.next
#前面l1,l2都是遍历res,真正对同一个链表res操作是最后一步 ,击败99.97%
#注意在python中的赋值问题
#下面的是正的两次遍历法,当l2=res.next时会报错,说None没有贡献next,所以把l2=res        
        res=ListNode(0)
        res.next=head
        l1=res.next
        l2=res
        l3=res
        L=1
        while l1.next:
            l1=l1.next
            L=L+1
        
        i=0
        while i <L-n:
            i=i+1
            l2=l2.next
        l2.next=l2.next.next
            
        return l3.next

猜你喜欢

转载自blog.csdn.net/weixin_44033136/article/details/85321977