问题描述
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
双指针法
p,q=head,先将q向后移动n,再一起将p,q向后移动到尾部p则为应要删除的结点的前一个指针
特殊数据:n刚好等于链表长度,直接用head删除第一个结点即可
代码
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
p = head
q = head
while n > 0:
q = q.next
n = n - 1
if not q:
head = head.next
return head
while q.next:
q = q.next
p = p.next
p.next = p.next.next
return head
运行结果

本文介绍了一种使用双指针法解决链表中倒数第N个节点删除问题的方法。通过两个指针p和q,先将q指针向前移动N个位置,然后同时移动p和q指针直到q到达链表尾部,此时p指向待删除节点的前一个节点,从而实现节点的高效删除。

546

被折叠的 条评论
为什么被折叠?



