就,,,很快嗷,直接快慢指针
代码如下:
def removeNthFromEnd(self , head: ListNode, n: int) -> ListNode:
slow, fast = head, head
for _ in range(n): # 遍历,找倒数第 n 个结点
fast = fast.next
if not fast: # 如果 fast 为空,倒数第 n 个结点为头结点
return head.next # 返回头结点下一结点即可
while fast.next: # 寻找倒数第 n 个结点的前一个结点
slow = slow.next
fast = fast.next
slow.next = slow.next.next # 删除第 n 个结点
return head
简洁明了