题解一:
递归:利用递归栈逆向遍历链表,并用全局变量记录当前遍历的是倒数第几位节点,当遍历到待删节点的上一位节点时,node.next=node.next.next删除待删节点。需要注意当删除的是头节点时,直接return head.next删除头节点。
class Solution {
int temp;//全局变量记录遍历位置
public int F(ListNode head) {
if (head != null) {
if (F(head.next) == 0) {
head.next = head.next.next;
}
}
return temp--;
}
public ListNode removeNthFromEnd(ListNode head, int n) {
temp = n;
F(head);
if (temp == -1) return head.next;
return head;
}
}