题目
解题思路
- 删除链表的倒数第n个节点,需要从链表末尾开始计数;
- 设立私有的全局变量用于统计;
- 因为是单向链表,所以需要通过递归获取需要删除的节点的上一个节点;
- 因为是倒置所以需要在递归后进行计数;
- 创建标志位区分特殊情况,需要删除的节点为首节点则无法获取上一节点;
- 在结果返回时判断是否为首节点。
代码展示
class Solution {
private int index = 0;
private boolean status = false;
public ListNode removeNthFromEnd(ListNode head, int n) {
removeNode(head, n);
return status ? head : head.next;
}
public void removeNode(ListNode head, int n){
if(head == null){
return;
}
removeNode(head.next, n);
index++;
if(index - 1 == n){
status = true;
head.next = head.next.next;
}
}
}