leetcode 92. Reverse Linked List II

来源:互联网 发布:淘宝充值网易宝可信嘛 编辑:程序博客网 时间:2024/06/05 22:26

题意

将链表上第m到n之间的结点反转(原地且一趟)

题解

如题

代码

/** * 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) {        ListNode *vhead = new ListNode(0);        vhead->next = head;        ListNode *mNode = head, *mPre = vhead;        int i = 1;        while(i < m) //find Mth Node        {            mPre = mNode;            mNode = mNode->next;            i++;        }        ListNode *last = mNode;        int cnt = n - m;         while(cnt--) // reverse cnt Node        {            ListNode *cur = last->next;            //delete            last->next = last->next->next;            //insert            cur->next = mPre->next;            mPre->next = cur;        }        return vhead->next;     }};
0 0
原创粉丝点击