1. 程式人生 > >leetcode 反轉連結串列二

leetcode 反轉連結串列二

反轉從位置 m 到 n 的連結串列。請使用一趟掃描完成反轉。

說明:
1 ≤ m ≤ n ≤ 連結串列長度。

示例:

輸入: 1->2->3->4->5->NULL, m = 2, n = 4
輸出: 1->4->3->2->5->NULL
public ListNode reverseBetween(ListNode head, int m, int n) {
    ListNode dummy = new ListNode(-1);
    dummy.next = head;
    ListNode cur = dummy;
    ListNode pre = null;
    ListNode front= null;
    ListNode last= null;
    for(int i = 0; i < m - 1; i++){
        cur = cur.next;
    }
    pre = cur;
    last = cur.next;
    for(int i = m. i <= n; i++){
        cur = pre.next;
        pre.next = cur.next;
        cur.next = front;
        front = cur;
    }
    cur = pre.next;
    pre.next = front;
    last.next = cur;
    return dummy.next;
}