关闭

【Leetcode】Sort List

246人阅读 评论(0) 收藏 举报
分类:

题目链接:https://leetcode.com/problems/sort-list/

题目:

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 fast = head,slow = head,l2 = null;
		//fast走两步,slow走一步,当fast到达表尾时,slow在链表中间位置
		while(fast.next!=null&&fast.next.next!=null){
			slow = slow.next;
			fast = fast.next.next;
		}//此时fast在表尾,slow在中间
		l2 = slow.next; //第二条链表表头
		slow.next = null; //断开

		head = sortList(head);//分冶
		l2 = sortList(l2);
		
		return mergeTwoLists(l2, head);//合并
	}
	
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        ListNode head = null,l,p = l1,q = l2;
		//==确定头节点
		if(p!=null&&q!=null){
			if(p.val<q.val){
				head = p;
				p = p.next;
			}else{
				head = q;
				q = q.next;
			}
		}else if(p==null){
			head = q;
			return head;
		}else if(q==null){
			head = p;
			return head;
		}
		l = head; 
		//===end
		
		while(p!=null&&q!=null){
			if(p.val<q.val){
				l.next = p;
				l = p;
				p = p.next;
			}else{
				l.next = q;
				l = q;
				q = q.next;
			}
		}
		
		if(p==null){
			l.next = q;
		}else if(q==null){
			l.next = p;
		}
			
		return head;
    }


0
0
查看评论

LeetCode Sort List 解题报告

Sort a linked list in O(n log n) time using constant space complexity. http://oj.leetcode.com/problems/sort-list/ 解题报告:就是对一个链表进行归并排序。 找到链表的middle节点,然...
  • worldwindjp
  • worldwindjp
  • 2014-02-08 15:31
  • 8984

LeetCode(148)Sort List

题目如下: Sort a linked list in O(n log n) time using constant space complexity. 分析如下: 能够有O(n lgn)时间复杂度的算法为,快速排序,堆排序,归并排序,三者的空间复杂度分别为O(1), O(N),O(N) 所以一开...
  • feliciafay
  • feliciafay
  • 2014-02-04 08:09
  • 4405

Leetcode Insertion Sort List 解题报告

http://oj.leetcode.com/problems/insertion-sort-list/ Sort a linked list using insertion sort. 基本分析:用插入排序对一个链表进行排序。 一开始写的时候想套用数组的插入排序,结果发现无法对末节点加上NULL...
  • worldwindjp
  • worldwindjp
  • 2014-02-11 09:23
  • 5461

[LeetCode] 148. Sort List java

/**148. Sort List * @param head * @return O(nlogn)给链表排序 */ public ListNode sortList(ListNode head) { if (head == null || h...
  • u012937029
  • u012937029
  • 2017-03-09 16:12
  • 162

LeetCode 148之Sort List的java题解

转自:http://blog.csdn.net/worldwindjp/article/details/18986737 题目: Sort a linked list in O(n log n) time using constant space complex...
  • u012249528
  • u012249528
  • 2015-05-07 10:00
  • 1068

Insertion Sort List -- LeetCode

原题链接: http://oj.leetcode.com/problems/insertion-sort-list/  这道题跟Sort List类似,要求在链表上实现一种排序算法,这道题是指定实现插入排序。插入排序是一种O(n^2)复杂度的算法,基本想法相信大家都比较了解,就...
  • linhuanmars
  • linhuanmars
  • 2014-03-14 22:45
  • 15179

Sort List -- LeetCode

原题链接: http://oj.leetcode.com/problems/sort-list/  这道题题目要求我们用O(nlogn)算法对链表进行排序,但是并没有要求用哪一种排序算法,我们可以使用归并排序,快速排序,堆排序等满足要求的方法来实现。对于这道题比较容易想到的是归并...
  • linhuanmars
  • linhuanmars
  • 2014-03-14 08:16
  • 16011

【LEETCODE】148- Sort List [Python]

Sort a linked list in O(n log n) time using constant space complexity. 题意: 对一个链表排序,O(n log n) time , constant space complexity 思路...
  • aliceyangxi1987
  • aliceyangxi1987
  • 2016-02-23 17:35
  • 847

LeetCode 148 — Sort List(C++ Java Python)

题目:http://oj.leetcode.com/problems/sort-list/ Sort a linked list in O(n log n) time using constant space complexity. 题目翻译: 在O(nlogn)时间内...
  • dragon_dream
  • dragon_dream
  • 2014-03-02 12:16
  • 3548

LeetCode147—Insertion Sort List

LeetCode147 Insertion Sort List
  • zhangxiao93
  • zhangxiao93
  • 2016-11-16 20:10
  • 225
    个人资料
    • 访问:569616次
    • 积分:8680
    • 等级:
    • 排名:第2675名
    • 原创:305篇
    • 转载:6篇
    • 译文:0篇
    • 评论:37条
    博客专栏
    文章分类
    最新评论