题目描述如下:
这道题由于上一题的递归思想的影响,所以想通过递归去解决这个问题。首先需要知道链表的长度,也通过递归来实现,然后通过链表长度和倒数第n个,可以求出目标位置,若链表到达目标位置,则直接进行跳过。
具体代码如下所示:
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n)
{
int sz=0;
int pos=-1;
list(head,sz,pos);
pos=sz-n;
int i=0;
list(head,i,pos);
return head;
}
void list(ListNode* &head,int &sz,int pos)
{
if(sz==pos)
{
head=head->next;
}
if(head!=nullptr)
{
list(head->next,++sz,pos);
}
}
};