题解 | #链表内指定区间反转#
链表内指定区间反转
http://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ class Solution { public: /** * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ ListNode* reverseBetween(ListNode* head, int m, int n) { // write code here ListNode *ll=nullptr; ListNode *lr=head; ListNode *rl=nullptr; ListNode *rr=nullptr; for(int i=1;i<m;i++){ ll=lr; lr=lr->next; }//找到m结点处:前一指针,当前指针 rr=lr; for(int i=m;i<=n;i++){ ListNode *temp; temp=rr->next; rr->next=rl; rl=rr; rr=temp; }//找到n结点指针与后一结点指针 if(ll){//防止头结点为空 ll->next=rl; lr->next=rr; } else{ lr->next=rr; head=rl; } return head; } };