应用题-链表专题-删除链表的倒数第N个节点
**删除节点,着重点就去想,怎么找到前驱节点**
至于找到的方法就很多了,下面就是通过间距来确定待删除节点的前驱节点的。
```python
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
# 一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
if not head: return None
dummy_head = ListNode( next=head )
tail = dummy_head # tail站在链表的尾部 倒数n,即tail前n个节点
parent = dummy_head # del_parent表示待删除节点的父节点
steps = 0
while tail.next:
tail = tail.next
steps += 1
if steps > n:
parent = parent.next
parent.next = parent.next.next
return dummy_head.next
```