一次过
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 // Start typing your C/C++ solution below 13 // DO NOT write int main() function 14 vector<ListNode *> S; 15 ListNode *tmp = head; 16 while (tmp) { 17 S.push_back(tmp); 18 tmp = tmp->next; 19 } 20 S.push_back(NULL); 21 int size = S.size(); 22 if (size < n+2) return head->next; 23 S[size-n-2]->next = S[size-n]; 24 return head; 25 } 26 };
C#
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * public int val; 5 * public ListNode next; 6 * public ListNode(int x) { val = x; } 7 * } 8 */ 9 public class Solution { 10 public ListNode RemoveNthFromEnd(ListNode head, int n) { 11 List<ListNode> S = new List<ListNode>(); 12 ListNode tmp = head; 13 while (tmp != null) { 14 S.Add(tmp); 15 tmp = tmp.next; 16 } 17 S.Add(null); 18 int c = S.Count; 19 if (c < n + 2) return head.next; 20 S[c - n - 2].next = S[c - n]; 21 return head; 22 } 23 }