Input: head = [1,2,3,4,5], n = 2
Output: [1,2,3,5]
Example 2:
Input: head = [1], n = 1
Output: []
Example 3:
Input: head = [1,2], n = 1
Output: [1]
Solution: (Removing {length - nth} node from first)
class Solution
{
public:
ListNode *removeNthFromEnd(ListNode *head, int n)
{
int s = 0;
ListNode *temp = head;
while (temp != NULL)
{
s = s + 1;
temp = temp->next;
}
ListNode *p = head;
ListNode *q = NULL;
int index = s - n;
int i = 0;
if (index == 0)
{
p = p->next;
head = p;
}
else
{
while (i < index)
{
q = p;
p = p->next;
i++;
}
q->next = p->next;
}
return head;
}
};