一刷~
给你一个链表,删除链表的倒数第
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 = headp2, p3 = p1, p1for i in range(n):p1 = p1.nextwhile p1.next:p1 = p1.nextp2 = p2.nextp2.next = p2.next.nextreturn p3.next