一刷~
给你一个链表,删除链表的倒数第
n
个结点,并且返回链表的头结点。
思路:
用两个指针,第一个指针先往前走n步(注意起始点不是head),然后第二个指针和第一个指针一起移动,当第一个指针走到链表最后一个结点时,第二个指针的next结点即为要删除的结点,另p2.next = p2.next.next即可。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
p1 = ListNode(0)
p1.next = head
p2, p3 = p1, p1
for i in range(n):
p1 = p1.next
while p1.next:
p1 = p1.next
p2 = p2.next
p2.next = p2.next.next
return p3.next