码迷,mamicode.com
首页 > 其他好文 > 详细

148. Sort List

时间:2019-04-09 16:34:21      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:nbsp   style   const   ext   ast   sans   移动   设置   sort list   

Sort a linked list in O(n log n) time using constant space complexity.

//利用归并排序的思想
class Solution {
    public ListNode sortList(ListNode head) {
        if (head == null || head.next == null)
            return head;
        ListNode prev = null;
        ListNode slow = head;
        ListNode fast = head;
        while (fast != null && fast.next != null ) {
            prev = slow;
            slow = slow.next;
            fast = fast.next.next;
        }
        
        prev.next = null;//将前半段链表设置为null结尾,链表被分成(head,p),(slow,fast)
        
        ListNode l1 = sortList(head);
        ListNode l2 = sortList(slow);
        
        return merge(l1, l2);
    }
    
    private ListNode merge(ListNode l1, ListNode l2) {
        ListNode l = new ListNode(0);//设置辅助节点
        ListNode p = l;
        while (l1 != null && l2 != null) {
            if (l1.val < l2.val) {
                p.next = l1;
                l1 = l1.next;
            } else {
                p.next = l2;
                l2 = l2.next;
            }
            p = p.next;//要把p向前移动
        }
        if (l1 != null)
            p.next = l1;
        if (l2 != null)
            p.next = l2;
        return l.next;
    }
}

148. Sort List

标签:nbsp   style   const   ext   ast   sans   移动   设置   sort list   

原文地址:https://www.cnblogs.com/MarkLeeBYR/p/10677685.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!