# 删除链表的倒数第 N 个结点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

进阶:你能尝试使用一趟扫描实现吗?

 

示例 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]

 

提示:

## template ```python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class LinkList: def __init__(self): self.head=None def initList(self, data): self.head = ListNode(data[0]) r=self.head p = self.head for i in data[1:]: node = ListNode(i) p.next = node p = p.next return r def convert_list(self,head): ret = [] if head == None: return node = head while node != None: ret.append(node.val) node = node.next return ret class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: v = ListNode(0, head) handle = v index = [] while v is not None: index.append(v) v = v.next pre = len(index)-n-1 next = len(index)-n+1 index[pre].next = index[next] if next >= 0 and next < len( index) else None return handle.next # %% l = LinkList() list1 = [1,2,3,4,5] head = l.initList(list1) n = 2 s = Solution() print(l.convert_list(s.removeNthFromEnd(head, n))) ``` ## 答案 ```python ``` ## 选项 ### A ```python ``` ### B ```python ``` ### C ```python ```