LeetCode 19. 删除链表的倒数第N个节点
程序员文章站
2022-10-28 12:48:34
链表的某个节点,典型的快慢指针问题。 加了比较详细的注释。...
链表的某个节点,典型的快慢指针问题
类似的还有,判断链表有无环、定位环的位置、定位链表中点的位置
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
# 关键词:链表 第N个节点
# 快慢指针解决问题
slow = head
fast = head
for i in range(n):
# fast 先走n步
fast = fast.next
# 若fast走n步就遍历完链表(fast为None)时,说明链表长度是n,倒数第n就是head
if not fast:
return head.next
while fast.next:
# fast和slow一起走,直到fast到到链表倒数第1节点
fast = fast.next
slow = slow.next
# 循环结束时,fast比slow快n步,那么fast在倒数第1节点,slow在倒数第1+n个节点
slow.next = slow.next.next
return head
本文地址:https://blog.csdn.net/authorized_keys/article/details/109636043
推荐阅读