题目
19. Remove Nth Node From End of List
思路
主要考察基础的链表删除节点,注意为了方便结果输出,我们加了一个无意义的头指针,用ans记录
代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode *p = head;
int tot=0;
while(p!=nullptr){
tot++;
p=p->next;
}
ListNode *tmp=head,*pre=new ListNode(0,head);
ListNode *ans=pre;
for(int i=1;i<tot-n+1&&tmp!=nullptr;i++){
pre=tmp;
tmp=tmp->next;
}
if(tmp!=nullptr)
pre->next = tmp->next;
return ans->next;
}
};