关闭

[Leetcode] 148. Sort List

标签: leetcode链表javaLinkList
68人阅读 评论(0) 收藏 举报
分类:

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

思路:把两个已有顺序链表的合并想法。

具体代码:

public ListNode sortList(ListNode head) {
        if(head == null || head.next == null){
            return head;
        }

        ListNode p = head;
        ListNode end = head.next.next;

        while(end != null && end.next != null){
            p = p.next;
            end = end.next.next;
        }

        ListNode p2 = sortList(p.next);

        p.next = null;

        ListNode p1 = sortList(head);


        return MegerList(p1,p2);
    }

//  对两个已排序的链表进行合并
    public ListNode MegerList(ListNode head1,ListNode head2){
        ListNode phead = new ListNode(Integer.MIN_VALUE);
        ListNode p = phead;

        while(head1 != null && head2 != null){
            if(head1.val < head2.val){
                p.next = head1;
                head1 =head1.next;
            }
            else{
                p.next = head2;
                head2 =head2.next;
            }
            p = p.next;
        }

        if(head1 != null){
            p.next = head1;
        }
        if(head2 != null){
            p.next = head2;
        }

        return phead.next;
    }
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7880次
    • 积分:671
    • 等级:
    • 排名:千里之外
    • 原创:63篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论