/**
* 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(m == n) return head;
ListNode *p = NULL, *q = head;
for(int i = 0; i < m-1; i++){
p = q;
q = q -> next;
}
ListNode *e1 = p, *s1 = q;
p = q;
q = q->next;
ListNode *r;
for(int i = m; i < n; i++){
r = q->next;
q->next = p;
p = q;
q = r;
}
if(s1) s1->next = q;
if(e1) e1->next = p;
else head = p;
return head;
}
};
Reverse Linked List II
最新推荐文章于 2024-01-12 14:53:46 发布