coding
unsky
deepdim
thought

Remove Nth Node From End of List

id19. Remove Nth Node From End of List Add to List QuestionEditorial Solution My Submissions
Total Accepted: 154617
Total Submissions: 480607
Difficulty: Easy
Contributors: Admin
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.
Note:
Given n will always be valid.
Try to do this in one pass.

主要使用了双指针,比较重要得一点是建立头节点,因为是一个独立结点所以需要分配空间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n)
{ ListNode* result=NULL;
if(head==NULL||head->next==NULL)
return result;
ListNode* Lhead= new ListNode(sizeof(ListNode));
// Lhead->val=99;
Lhead->next=head;
// cout<<Lhead->next->next->val;
ListNode *p=Lhead;
for(int i=0;i<=n;i++)
{
p=p->next;
}
ListNode *q=Lhead;
while(p)
{p=p->next;
q=q->next;
}
ListNode* h=q->next->next;
// cout<<h->val<<q->val;
q->next=h;
// cout<<q->val;
result=Lhead->next;
return result;
}
};

坚持原创技术分享,您的支持将鼓励我继续创作!