给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
输入:1->2->3->4->5, 和 n = 2
输出:1->2->3->5
python3:
# 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:
fast=slow=head # 快慢双指针
for i in range(n): # 让快指针先走n步
fast=fast.next
if fast == None: # 若走了n步后为空,则要删除的是head节点
return head.next
while fast.next: # 快慢指针同时向前走,步距为n,快指针走到头时,慢指针的下一个即是要删除的节点
slow=slow.next
fast=fast.next
slow.next=slow.next.next # 删除该节点
return head
本文介绍了一种使用快慢双指针的方法来解决链表中删除倒数第N个节点的问题,通过让快指针先走N步,然后与慢指针保持N步距离,当快指针到达链表尾部时,慢指针指向待删除节点的前一个节点,从而实现高效删除。
213

被折叠的 条评论
为什么被折叠?



