143. Reorder List

Posted 我的名字叫周周

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了143. Reorder List相关的知识,希望对你有一定的参考价值。

    /*
     * 143. Reorder List 
     * 11.28 by Mingyang 总体思想就是后半部分reverse然后再merge
     */
    public void reorderList(ListNode head) {
        if (head == null)
            return;
        ListNode slow = head;
        ListNode fast = head;
        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }
        ListNode tem = slow.next;
        slow.next = null;
        // 这里用了下面brink的代码
        ListNode ne = reverseList(tem);
        mergeLists(head, ne);
    }
    public void mergeLists(ListNode l1, ListNode l2) {
        if (l1 == null && l2 == null)
            return;
        while (l1 != null && l2 != null) {
            ListNode tem = l1.next;
            ListNode ne = l2.next;
            l1.next = l2;
            // 这一步很重要,因为如果l2的下一个不能指向null
            l2.next = tem == null ? ne : tem;
            l1 = tem;
            l2 = ne;
        }

    }

 

以上是关于143. Reorder List的主要内容,如果未能解决你的问题,请参考以下文章

143. Reorder List

143. Reorder List

leetcode 143. Reorder List

143. Reorder List

143. Reorder List

143. Reorder List