首页 > 其他 > 详细

143. Reorder List

时间:2016-05-26 10:00:43      阅读:236      评论:0      收藏:0      [点我收藏+]
    /*
     * 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

原文:http://www.cnblogs.com/zmyvszk/p/5529832.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!