Leetcode 19 Remove Nth Node From End of List
struct ListNode{
int val;
ListNode* next;
ListNode(int x):val(x),next(NULL) {}
};
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
if(n <= 0)
return head;
ListNode* newList = new ListNode(0);
ListNode* p1 = newList;
ListNode* p2 = newList;
newList->next = head;
for(int i = 0;i < n;i ++)
{
if(p1)
p1 = p1->next;
else
return head;
}
if(!p1->next) {
//n = len(list)
newList->next = head->next;
return newList->next;
}
while(p1){
p2 = p2->next;
p1 = p1->next;
}
if(p2->next){
//p2 is not the tail node
p2->val = p2->next->val;
p2->next = p2->next->next;
p2 = p2->next;
} else{
ListNode* newNode = head;
while(newNode->next->next){
newNode = newNode->next;
}
newNode->next = nullptr;
}
return newList->next;
}
};
Leetcode 19 Remove Nth Node From End of List
最新推荐文章于 2020-10-18 20:03:23 发布