reverse-linked-list-ii

对于reverse部分有点迷糊。网上看到的解释,也许更能帮助理解.https://yq.aliyun.com/articles/3867
不妨拿出四本书,摞成一摞(自上而下为 A B C D),要让这四本书的位置完全颠倒过来(即自上而下为 D C B A):

盯住书A,每次操作把A下面的那本书放到最上面

初始位置:自上而下为 A B C D

第一次操作后:自上而下为 B A C D

第二次操作后:自上而下为 C B A D

第三次操作后:自上而下为 D C B A

class Solution {
public:
    ListNode *reverseBetween(ListNode *head, int m, int n) {
        ListNode*dummy=new ListNode(-1);
        dummy->next=head;
        ListNode*prestart=dummy,*start=head;
        for(int i=1;inext,start=start->next;
        for(int i=m;inext;
            start->next=temp->next;
            temp->next=prestart->next;
            prestart->next=temp;
        }
        return dummy->next;
    }
};

你可能感兴趣的:(reverse-linked-list-ii)