LeetCode19题:删除链表的倒数第N个结点(python3)
代���思路:
我们可以设想假设设定了双指针 p 和 q 的话,当 q 指向末尾的 NULL,p 与 q 之间相隔的元素个数为 n 时,那么删除掉 p 的下一个指针就完成了要求。
1.设置虚拟节点 dummyHead 指向 head
2.设定双指针 p 和 q,初始都指向虚拟节点 dummyHead
3.移动 q,直到 p 与 q 之间相隔的元素个数为 n
4.同时移动 p 与 q,直到 q 指向的为 NULL
5.将 p 的下一个节点指向下下个节点
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]: fast = slow = dummy_head = ListNode(next=head) while n: fast = fast.next n -= 1 while fast.next: fast = fast.next slow = slow.next slow.next = slow.next.next return dummy_head.next
The End