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=headslow,fast=dumbNode,headfor i in range(n):fast=fast.nextwhile fast:fast=fast.nextslow=slow.nextslow.next=slow.next.nextreturn dumbNode.next