/**
* 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
ListNode dummy(0);
dummy.next = head;
ListNode *preM, *pre = &dummy;
for (int i = 1; i <= n; ++i) {
if (i == m) preM = pre;
if (i > m && i <= n) {
pre->next = head->next;
head->next = preM->next;
preM->next = head;
head = pre; // head has been moved, so pre becomes current
}
pre = head;
head = head->next;
}
return dummy.next;
}
};
Reverse Linked List II
最新推荐文章于 2022-10-08 18:10:16 发布