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
解法
三个指针,注意转换的顺序
public ListNode reverseBetween(ListNode head, int m, int n) {
ListNode res = new ListNode(-1);
res.next = head;
ListNode fast = res;
for (int i = 0; i < m - 1; i++)
fast = fast.next;
ListNode cur = fast.next;
for (int i = m; i < n; i++) {
ListNode tmp = cur.next;
cur.next = tmp.next;
tmp.next = fast.next;
fast.next = tmp;
}
return res.next;
}
Runtime: 0 ms, faster than 100.00% of Java online submissions for Reverse Linked List II.
Memory Usage: 35.8 MB, less than 92.53% of Java online submissions for Reverse Linked List II.