My AC c++ solution


  • 0
    F
    class Solution {
    public:
        ListNode *reverseBetween(ListNode *head, int m, int n) {
            int i;
            ListNode *p, *p1, *p2,*p3,*p4,*tmp;
            p = p1 = p2 = p3 = p4 = tmp = NULL;
            for (i=1, p=head; p; i++, p=p->next){
                if(i==m-1) p1 = p;
                if(i==m) p2 = p;
                if(i==n) p3 = p;
                if(i==n+1) p4 = p;
            }
            
            while(p2!=p3){
                tmp = p2->next;
                p2->next = p4;
                p4 = p2;
                p2 = tmp;
            }
            p2->next = p4;
            p4 = p2;
            
            if(p1){
                p1->next = p4;
            } else {
                head = p4;
            }
            
            return head;
        }
    };

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.