92. 反转链表 II
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明:
1 ≤ m ≤ n ≤ 链表长度。
示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4 输出: 1->4->3->2->5->NULL
public class T92 { public ListNode reverseBetween(ListNode head, int m, int n) { ListNode dummy = new ListNode(-1); dummy.next = head; ListNode preNode = dummy; //m - 1 步停下,即为 preNode for (int i = 0; i < m - 1; i++) { preNode = preNode.next; } ListNode curNode = preNode.next; ListNode node = null; for (int i = 0; i < n - m + 1; i++) { ListNode temp = curNode.next; curNode.next = node; node = curNode; curNode = temp; } preNode.next.next = curNode; preNode.next = node; return dummy.next; } }