Leetcode 19.删除链表的倒数第第N个结点

geek0070 / 2024-09-18 / 原文

1.题目基本信息

题目:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

地址:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/

2.解题方法

2.1.解题思路

使用快慢指针

2.2.解题步骤

第一步,初始化快指针为head,慢指针指向一个哑结点,哑结点指向head

第二步,让快指针先走k步

第三步,让快慢指针同步走,直到快指针为null,此时的慢指针刚好走到倒数第k个节点头结点位置,执行删除操作即可完成解题

3.解题代码

class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        dumbNode=ListNode(0,head)
        dumbNode.next=head
        slow,fast=dumbNode,head
        for i in range(n):
            fast=fast.next
        while fast:
            fast=fast.next
            slow=slow.next
        slow.next=slow.next.next
        return dumbNode.next

4.执行结果

在这里插入图片描述