Reverse a linked list from position m to n. Do it in one-pass.
Note: 1 ≤ m ≤ n ≤ length of list.
Example:
Input: 1->2->3->4->5->NULL, m = 2, n = 4
Output: 1->4->3->2->5->NULL
题解:
class Solution {
public:
ListNode* reverseBetween(ListNode* head, int m, int n) {
vector<int> data;
ListNode *p = new ListNode(0);
while (head != NULL) {
data.push_back(head->val);
head = head->next;
}
reverse(data.begin() + m - 1, data.begin() + n);
head = p;
for (int i = 0; i < data.size(); i++) {
p->next = new ListNode(data[i]);
p = p->next;
}
return head->next;
}
};