/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) : val(x), next(nullptr) {}
* };
*/
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* cur = head;
int length = 0;
while(cur)
{
++length;
cur = cur->next;
}
if(length==n)
{
ListNode* temp = head;
head=head->next;
delete temp;
return head;
}
length = length - (n+1);
cur = head;
while(length--)
{
cur = cur->next;
}
ListNode* temp = cur->next;
cur->next = cur->next->next;
delete temp;
return head;
}
};