【Leet-Code】19. 删除链表的倒数第N个节点

    技术2025-08-08  11

     

    【题目解析】

    采取双重遍历肯定是可以解决问题的,但题目要求我们一次遍历解决问题,那我们的思路得发散一下。

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

    设置虚拟节点 result_ListNode 指向 head;设定双指针 slow 和 fast ,初始都指向虚拟节点 result_ListNode;移动 fast ,直到 slow 与 fast 之间相隔的元素个数为 n;同时移动 slow 与 fast ,直到 fast 指向的为 NULL;将 slow 的下一个节点指向下下个节点; # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: result_ListNode = ListNode(0) result_ListNode.next = head fast, slow = result_ListNode, result_ListNode for i in range(n): fast = fast.next while fast.next: slow = slow.next fast = fast.next slow.next = slow.next.next return result_ListNode.next

     

    Processed: 0.014, SQL: 9