Leetcode刷题记录——19. 删除链表的倒数第N个节点

在这里插入图片描述
三指针
先弄一个 从头结点出发 走n-1步
然后 再弄一个 从头结点 与第一个指针一起向前走一步
然后 再弄一个 从头结点出发 while 第一个.next !=none时 一起走

当第一个.next == None时
让第三个的next指向第三个的next.next
删除第二个
即可

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        faker = ListNode(head.val)
        faker.next = head
        pre = faker
        k = n - 1
        for i in range(n - 1):
            pre = pre.next
        tobedeleted = faker
        tobedeleted = tobedeleted.next
        pre = pre.next
        back = faker
        while pre.next != None:
            pre = pre.next
            tobedeleted = tobedeleted.next
            back = back.next
        back.next = back.next.next
        del tobedeleted
        return faker.next



猜你喜欢

转载自blog.csdn.net/weixin_41545780/article/details/107552933