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