要是能遍历两下就很简单,题目要求只遍历一下
思路
1.设置:指针l,指针r,指针r指向指针l的后n个
2.当指针r指向尾节点的时候,指针l就是结果
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* node = head;
ListNode* tail = nullptr;
int i = 0;
while(node){
if(in)break;
++i;
node = node->next;
}
// cout<val<<endl;
cout<<i<<n;
if(in && !node) return head->next; //删的是头结点
if(i!=n) return head; // n>size()
tail = head;
while(node->next){
++i;
tail = tail->next;
node = node->next;
}
// cout<<tail->val;
tail->next = tail->next->next;
return head;
}
};