[leetcode刷题总结]Reverse Linked List II

来源:互联网 发布:java snmp开发 编辑:程序博客网 时间:2024/05/04 03:01

貌似写啰嗦了- - 不过就这样吧,如果将来计划刷第二遍的话, 再精简下


/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode *reverseBetween(ListNode *head, int m, int n) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if(head == 0)            return 0;        if(n == m)            return head;        ListNode * last_head = 0;        ListNode * first = 0;        ListNode * pre = 0;        ListNode * now = head;        int cur = 1;        while(now){            ListNode * next = now->next;            if(cur == m){                last_head = pre;                first = now;                pre = now;                now = next;            }else if(cur == n){                now->next = pre;                first->next = next;                if(m == 1)                    return now;                else{                    last_head->next = now;                    return head;                }            }            else if(cur > m){                now->next = pre;                pre = now;                now = next;            }            else{                pre = now;                now = next;            }            ++cur;        }    }};


原创粉丝点击