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;
}

猜你喜欢

转载自blog.csdn.net/qq_43322057/article/details/84674195
今日推荐