leetcode19. 删除链表的倒数第 N 个结点

leetcode19. 删除链表的倒数第 N 个结点

题目

leetcode19. 删除链表的倒数第 N 个结点_第1张图片

思路

  • 建立虚头节点
  • fast首先走n + 1步 ,因为只有这样同时移动的时候slow才能指向删除节点的上一个节点(方便做删除操作)

代码

class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        pre_head = ListNode(val=0, next=head)
        node_right = pre_head
        node_left = pre_head

        for i in range(n+1):  # 快指针比慢指针快 n+1 步,方便删除
            node_right = node_right.next

        while node_right:
            node_right = node_right.next
            node_left = node_left.next

        node_left.next = node_left.next.next

        return pre_head.next

你可能感兴趣的:(链表,数据结构)