您的位置:首页 > Web前端 > Node.js

[Leetcode] Remove Nth Node From End of List

2016-10-05 15:15 232 查看
利用快慢指针的方法进行,先让快指针走n步,本题里注明了n一定有效,所以不需要对n的有效性进行检查,若需检查请参考二,需要注意的时链表删除的时候需要注意头指针的处理问题

class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
if(!head) return nullptr;
ListNode* p1 = head;
ListNode* p2 = head;
ListNode* prev;
int i = 0;
while(i<n-1){
p2=p2->next;
i++;
}
//if(!p2) return nullptr;
while(p2->next){
prev=p1;
p1=p1->next;
p2=p2->next;
}
if(p1==head) return head->next;
else prev->next=p1->next;
return head;
}
};


class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
if(!head) return nullptr;
ListNode* p1 = head;
ListNode* p2 = head;
ListNode* prev;
int i = 0;
while(i<n-1&&p2->next){
p2=p2->next;
i++;
}
if(i<n-1) return nullptr;
while(p2->next){
prev=p1;
p1=p1->next;
p2=p2->next;
}
if(p1==head) return head->next;
else prev->next=p1->next;
return head;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Leetcode