赞
踩
题目描述:
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
示例 1:
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1
输出:[]
示例 3:
输入:head = [1,2], n = 1
输出:[1]
**思路:**双指针
1、定义两个指针,右指针先走n步,然后左右指针一起走,可以发现左右指针之间的距离一直是n,就可以找到第n+1个指针。
2、删除第n个节点,需要找到倒数第n+1个节点,然后让上一个指针的节点指向倒数第n+1个节点,即
left.next=left.next.next
Python:
class Solution: def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]: # 创建一个虚拟节点 dummy=ListNode(next=head) # 右指针等于这个虚拟节点 right=dummy # 遍历这个链表,让右指针走n步 for _ in range(n): right=right.next # 左指针等于这个虚拟节点 left=dummy # 左右指针都走n步 while right.next: left=left.next right=right.next # 删除倒数第n+1个节点 left.next=left.next.next return dummy.next
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。