欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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