代码改变世界

leetcode - Remove Nth Node From End of List

2013-11-02 20:01  张汉生  阅读(168)  评论(0)    收藏  举报

 

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode *removeNthFromEnd(ListNode *head, int n) {
12         // IMPORTANT: Please reset any member data you declared, as
13         // the same Solution instance will be reused for each test case.
14         ListNode * toRemove = NULL, * before=NULL;
15         ListNode * itr = head;
16         int i = 0;
17         while (itr!=NULL){
18             i++;
19             if (i==n)
20                 toRemove = head;
21             else if (i>n){
22                 before = toRemove;
23                 toRemove = toRemove->next;
24             }
25             itr = itr->next;
26         }
27         if (toRemove==head)
28             return head->next;
29         before->next = toRemove->next;
30         return head;
31     }
32 };