题目描述
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
出处
思路
两个指针间隔n,一趟遍历解决。
代码
cpp
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* p=head;
ListNode* q=head;
while(n>0){
q=q->next;
n--;
}
if(!q){
q=p->next;
delete(p);
return q;
}
q=q->next;
while(q){
p=p->next;
q=q->next;
}
q=p->next;
p->next=q->next;
delete(q);
return head;
}
};