LeetCode Solutions : Sort List
来源:互联网 发布:安卓听书软件 编辑:程序博客网 时间:2024/04/27 22:41
【题目描述】Sort a linked list in O(n log n) time using constant space complexity.
【算法思路】时间复杂度限制在O(n log n),我们可以第一时间想到常用的二路归并排序,快速排序和堆排序,其中快排和堆排只适用于线性表,即数组,故这道编程题毫无疑问用二路归并排序;
【编程步骤】
* 1. 利用一个小技巧,可以设置慢行指针low和快行指针fast,把链表分成两部分来操作,即first和second链表
* 2. 递归排序first和second链表,即
first=sortList(head);
second=sortList(second);
* 3. 合并这两个链表,即:mergeListSort(first,second)
【代码实现】
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public ListNode sortList(ListNode head) { if(head==null||head.next==null)return head;ListNode fast=head;ListNode slow=head;while(fast.next!=null&&fast.next.next != null){fast=fast.next.next;slow=slow.next;}ListNode second=slow.next;slow.next=null;ListNode first=sortList(head);second=sortList(second);return mergeListSort(first,second); }private ListNode mergeListSort(ListNode first,ListNode second){ListNode newList=new ListNode(0);ListNode p=newList;while(first!=null&&second!=null){if(first.val<=second.val){p.next=first;first=first.next;}else{p.next=second;second=second.next;}p=p.next;}if(first!=null)p.next=first;if(second!=null)p.next=second;return newList.next;}}
11 0
- LeetCode Solutions : Sort List
- LeetCode Solutions : Rotate List
- LeetCode Solutions : Rotate List
- LeetCode Solutions : Reorder List
- [leetcode][list][sort] Sort List
- LeetCode Solutions : Remove Duplicates from Sorted List
- Insertion Sort List | leetcode
- Leetcode: Insertion Sort List
- [LeetCode] Insertion Sort List
- Leetcode: Insertion Sort List
- Leetcode: Sort List
- Sort List | leetcode
- leetcode-Sort List
- leetcode-Insertion Sort List
- LeetCode题解:Sort List
- leetcode 134: Sort List
- [LeetCode]Sort List
- [LeetCode]Insertion Sort List
- 数据仓库_多维数据模型
- silverlight 下的模式对话框实现
- Binary Tree Level Order Traversal II
- 我们之间的关系有多脆弱呢,我只要关掉电脑关掉手机,可能你这辈子就再也不会联系到我了。
- *** Assertion failure in -[UISectionRowData refreshWithSection:tableView:tableViewRowData:], /Source
- LeetCode Solutions : Sort List
- 定义的按钮类继承CBUTTON类修改光标显示时不能够正常的修改
- IOS开发之自定义键盘
- 使用Score对文档进行排序
- 济南得了失眠如何治
- 杭电——4391
- x$ kernel service & cache table tips
- VBA中Dictionary对象使用小结
- 每天的不同