您的位置:首页 > 编程语言 > Java开发

148. Sort List

2016-07-27 22:47 405 查看
题目:

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

归并排序:

//得到中间节点
private ListNode getMiddleNode(ListNode head)
{
ListNode fast =head;
ListNode slow = head;
while(fast.next!=null && fast.next.next!=null)
{
fast=fast.next.next;
slow=slow.next;

}
return slow;
}
//合并两个排序链表
private ListNode mergeList(ListNode l1,ListNode l2)
{
ListNode p =new ListNode(0);
ListNode newnode =p;
while (l1!=null && l2!=null)
{
if(l1.val <l2.val)
{
newnode.next=l1;
l1=l1.next;
}
else
{
newnode.next=l2;
l2=l2.next;
}
newnode=newnode.next;
}
newnode.next=l1!=null?l1:l2;
return p.next;
}

public ListNode sortList(ListNode head) {
if(head == null || head.next==null)return head;
ListNode middle = getMiddleNode(head);
ListNode next =middle.next;
middle.next=null;
return mergeList(sortList(head),sortList(next));

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode java