[LintCode]チェーンテーブルの最後からn番目のノードを削除
4564 ワード
1 /**
2 * Definition of ListNode
3 * class ListNode {
4 * public:
5 * int val;
6 * ListNode *next;
7 * ListNode(int val) {
8 * this->val = val;
9 * this->next = NULL;
10 * }
11 * }
12 */
13 class Solution {
14 public:
15 /**
16 * @param head: The first node of linked list.
17 * @param n: An integer.
18 * @return: The head of linked list.
19 */
20 ListNode *removeNthFromEnd(ListNode *head, int n) {
21 // write your code here
22 ListNode* pre = head;
23 ListNode* cur = head;
24 for (int i = 0; i < n; i++)
25 cur = cur -> next;
26 if (!cur) {
27 delete pre;
28 return pre -> next;
29 }
30 while (cur -> next) {
31 pre = pre -> next;
32 cur = cur -> next;
33 }
34 delete pre -> next;
35 pre -> next = pre -> next -> next;
36 return head;
37 }
38 };