反转链表系列

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

猜你喜欢

转载自www.cnblogs.com/zzytxl/p/12529096.html
今日推荐