19、Remove Nth Node From End of List
删除链表中倒数第n个节点
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。
注意事项
链表中的节点个数大于等于n
给出链表1->2->3->4->5->null和 n = 2.
删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.
代码:
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
bool FF=false;
return removeNthFromEnd(head,n,FF);
}
ListNode* removeNthFromEnd(ListNode* head,int &n,bool &FF)
{
if(head->next) //递归到最底部
head->next=removeNthFromEnd(head->next,n,FF);
if(FF!=true&&--n==0)//判断是否是要删除点
{
FF=true;
ListNode *curr=head->next;
delete head;
return curr;
}
return head;
}
};