目录
题目
- 给你一个链表,删除链表的倒数第 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]
法一、循环
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
# Step 1: 获取链表长度
length = 0
cur = head
while cur != None:
length += 1
cur = cur.next
# 处理删除头节点的情况
if length == n:
return head.next
# Step 2: 找到倒数第 N 个节点的前一个节点
cur = head
for _ in range(length - n - 1):
cur = cur.next
# Step 3: 删除节点,并重新连接
cur.next = cur.next.next
return head
- for _ in range(length - n - 1):下划线 _ 是一个通用的变量名,通常用于表示一个临时或不需要使用的变量。在循环中,它表示一个占位符,用于表示我们不需要使用循环变量的值。
法二、快慢指针
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
# 初始化快慢指针
slow = head
fast = head
# 将快指针向前移动 n 步
for _ in range(n):
fast = fast.next
# 处理删除头节点的情况
if fast is None:
return head.next
# 同时移动快慢指针,直到快指针到达链表末尾
while fast.next != None:
slow = slow.next
fast = fast.next
# 删除倒数第 N 个节点
slow.next = slow.next.next
return head
标签:head,slow,cur,19,fast,next,链表,倒数第
From: https://www.cnblogs.com/lushuang55/p/17796040.html