[LeetCode92]Reverse Linked List II
2597 ワード
タイトル:
Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:Given
return
mからnまでの単一チェーンテーブルを反転
The basic idea is as follows:
(1) Create a
(2) Set
分類:Linked List
コード:
Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:Given
1->2->3->4->5->NULL
, m = 2 and n = 4, return
1->4->3->2->5->NULL
. mからnまでの単一チェーンテーブルを反転
The basic idea is as follows:
(1) Create a
new_head
that points to head
and use it to locate the immediate node before the m
-th (notice that it is 1
-indexed) node pre
; (2) Set
cur
to be the immediate node after pre
and at each time move the immediate node after cur
(named move
) to be the immediate node after pre
. Repeat it for n - m
times. 分類:Linked List
コード:
class Solution {
public:
ListNode* reverseBetween(ListNode* head, int m, int n) {
ListNode* new_head = new ListNode(0);
new_head -> next = head;
ListNode* pre = new_head;
for (int i = 0; i < m - 1; i++)
pre = pre -> next;
ListNode* cur = pre -> next;
for (int i = 0; i < n - m; i++) {
ListNode* move = cur -> next;
cur -> next = move -> next;
move -> next = pre -> next;
pre -> next = move;
}
return new_head -> next;
}
};