题目:
给你一个链表,删除链表的倒数第
n
个结点,并且返回链表的头结点。来源:力扣(LeetCode)
链接:力扣
示例:
示例 1:
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:输入:head = [1], n = 1
输出:[]
示例 3:输入:head = [1,2], n = 1
输出:[1]
解法:
首先获取链表长度(sz),将问题转化为删除链表第sz-n+1个节点,那么需要修改第sz-n个节点的next指针指向下下个节点,如果删除的是头结点,那么直接返回head.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]: sz = 1 node = head while node.next: sz += 1 node = node.next n = sz - n node = head index = 1 if n == 0: return head.next else: while index != n: head = head.next index += 1 head.next = head.next.next return node