python 删除链表的倒数第N个节点

    技术2022-07-11  104

    删除链表的倒数第N个节点

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

    示例:

    给定一个链表: 1->2->3->4->5, 和 n = 2.

    当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明:

    给定的 n 保证是有效的。

    进阶:

    你能尝试使用一趟扫描实现吗?

    方法一:需要两次遍历

    class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: """ head:是一个头结点 """ if head.next == None: # 判断链表是否为空或者只有一个节点 head = None return head tump = head length = 0 while tump != None: # 第一次遍历,的处链表的长度length tump = tump.next length += 1 tump = head if length == n: # 判断删除的是否为第一个节点 head = head.next # 如果删除第一个节点,就将head指向第二个节点 return head for i in range(length - n - 1): # 得到第n-1个节点 tump = tump.next tump.next = tump.next.next # 将第n-1个节点指向第n+1个节点,即删除了第n个节点 return head
    Processed: 0.013, SQL: 10