Given a linked list, remove the nth node from the end of list and return its head.
For example,
Given linked list: 1->2->3->4->5, and n = 2.
After removing the second node from the end, the linked list becomes 1->2->3->5
ListNode *removeNthFromEnd(ListNode *head, int n){
// Start typing your C/C++ solution below
// DO NOT write int main() function
ListNode *fast = head, *slow = head, *rm = head;
while (n--){
fast = fast->next;
}
if (fast == NULL){
head =head->next;
free(rm);
return head;
}
while (fast->next != NULL){
fast = fast->next;
slow = slow->next;
}
rm = slow->next;
slow->next = rm->next;
free(rm);
return head;
}
632

被折叠的 条评论
为什么被折叠?



