赞
踩
给定一个链表,删除链表的倒数第 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 的下一个节点指向下下个节点
动画演示:
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。