删除链表的倒数第n个节点 python_19. 删除链表的倒数第N个节点——Python版

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

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.

当删除了倒数第二个节点后,链表变为 1->2->3->5.

思路:

可以设想假设设定了双指针 p 和 q 的话,当 q 指向末尾的 NULL,p 与 q 之间相隔的元素个数为 n 时,那么删除掉 p 的下一个指针就完成了要求。

设置虚拟节点 dummyHead 指向 head

设定双指针 p 和 q,初始都指向虚拟节点 dummyHead

移动 q,直到 p 与 q 之间相隔的元素个数为 n

同时移动 p 与 q,直到 q 指向的为 NULL

将 p 的下一个节点指向下下个节点

动画演示:

删除链表的倒数第n个节点 python_19. 删除链表的倒数第N个节点——Python版_第1张图片

class Solution:

def removeNthFromEnd(self, head: 'ListNode',n):

dummy = ListNode(0)

dummy.next=head

p1=p2=dummy

while n:

p1=p1.next

n -=1

while p1.next:

p1=p1.next

p2=p2.next

p2.next= p2.next.next

return dummy.next

参考资料:https://github.com/MisterBooo/LeetCodeAnimation/blob/master/0019-Remove-Nth-Node-From-End-of-List/Article/0019-Remove-Nth-Node-From-End-of-List.md

原文链接:https://blog.csdn.net/JulyLi2019/article/details/106086957

你可能感兴趣的:(删除链表的倒数第n个节点,python)