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));
}
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));
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序