Leetcode 92 Reverse Linked List II

这道题和Reverse Linked List差不多,就是差一个范围。如果搞明白了那个套路,这道题还是非常简单的,具体代码如下所示:

class Solution {
public:
    ListNode* reverseBetween(ListNode* head, int m, int n) {
        if (head == NULL || head->next == NULL) {
            return head;
        }
        
        ListNode* dummyHead = new ListNode(0);
        dummyHead->next = head;
        ListNode* prev = dummyHead;
        
        for(int i=0; i<m-1; ++i) {
            prev = prev->next;
        }
        
        ListNode* cur = prev->next;
        ListNode* nex = cur->next;
        
        for(int i=0; i<n-m; ++i) {
            cur->next = nex->next;
            nex->next = prev->next;
            prev->next = nex;
            nex = cur->next;
        }
        
        ListNode* retHead = dummyHead->next;
        delete dummyHead;
        return retHead;
        
    }
};

 

posted @ 2018-09-04 20:57  ly-bnu  阅读(81)  评论(0)    收藏  举报