给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def removeNthFromEnd(self, head, n):
"""
:type head: ListNode
:type n: int
:rtype: ListNode
"""
if not head:
return []
dummy= l = r = ListNode(10086)
dummy.next=head
for i in range(n):#n是几就让r提前走几步。
r=r.next
while r.next is not None:
l=l.next
r=r.next
l.next=l.next.next#r比l快n步,它俩一起走到最后的时候,l的下一个就是要删除的结点。
return dummy.next #头结点是dummy.next,一般情况下是head,如果head被删掉的话就到下一个。
附B站up主五分钟力扣YK的讲解链接:bilibili.com/video/BV1La4y1x73V?from=search&seid=11361603959258803971