leetcode 19. 删除链表的倒数第N个节点
2020-10-20 本文已影响0人
SourceZhang
(leetcode)[https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/]
class Solution {
public:
ListNode *removeNthFromEnd(ListNode *head, int n) {
ListNode *returnedHead = head;
ListNode *previousNode = NULL;
int size = 0;
while ( head ) {
if ( size == n || previousNode ) {
if ( previousNode ) {
previousNode = previousNode -> next;
} else {
previousNode = returnedHead;
}
}
head = head -> next;
++size;
}
if ( n == size ) {
if ( returnedHead ) {
ListNode *next = returnedHead -> next;
returnedHead -> next = NULL;
delete returnedHead;
returnedHead = next;
}
} else if ( n < size ) {
if ( previousNode ) {
ListNode *next = previousNode -> next;
if ( next ) {
previousNode -> next = next -> next;
delete next;
next = NULL;
}
}
}
return returnedHead;
}
};