Same thing need to as :
Whether m > n, m > list size, or n > list size
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 *reverseBetween(ListNode *head, int m, int n) { 12 if (!head || !head->next) return head; 13 int i = 0; 14 ListNode *result = new ListNode(0); 15 result->next = head; 16 ListNode *runner = result; 17 for (i = 0; i < m-1; i++) { 18 runner = runner->next; 19 } 20 i = n-m; 21 head = runner->next; 22 while (i-- > 0) { 23 ListNode *tmp = head->next; 24 head->next = tmp->next; 25 tmp->next = runner->next; 26 runner->next = tmp; 27 } 28 return result->next; 29 } 30 };
LeetCode - Refresh - Reverse Linked List II
原文:http://www.cnblogs.com/shuashuashua/p/4358959.html