, = 2 and = 4,
.
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head){if(head==NULL || head->next ==NULL)return head;ListNode* tmp = reverseList(head->next);head->next->next = head;head->next = NULL;return tmp;}ListNode *reverseBetween(ListNode *head, int m, int n) { // Note: The Solution object is instantiated only once. //1 <= m <= n <= length of list.if(head==NULL || m>=n)return head;ListNode* pm = NULL;ListNode* pn = NULL;if(m==1){ListNode* p=head;while(--n) p=p->next;pn=p->next;p->next = NULL;head = reverseList(head);p=head;while(p->next) p=p->next;p->next = pn;return head;}else{pm = head;while(--m > 1) pm = pm->next;ListNode* p = head;while(--n) p = p->next;pn = p->next;p->next = NULL;pm->next = reverseList(pm->next);p=pm->next;while(p->next) p=p->next;p->next = pn;return head;} }};