leetcode(148):Sort List
来源:互联网 发布:python split 多个空格 编辑:程序博客网 时间:2024/06/05 17:36
【题目】
Sort a linked list in O(n log n) time using constant space complexity.
【分析】
要求将一个单链表排序,时间复杂度为O(nlogn)
此题考查单链表的归并排序
1.找到单链表的中间节点,将整个单链表分为两个子链表
2.分别对两个子链表进行归并排序
3.将排好序的子链表合并成一个链表
【Java实现】
public class Solution { public static ListNode getMiddleOfList(ListNode head) { ListNode slow = head; ListNode fast = head.next; while(fast!=null&&fast.next!=null) { slow = slow.next; fast = fast.next.next; } return slow; } public ListNode sortList(ListNode head) { if(head==null || head.next==null) return head; ListNode mid = getMiddleOfList(head); ListNode next=mid.next; mid.next=null; ListNode l1 = sortList(head); ListNode l2 = sortList(next); return mergeList(l1,l2); } private static ListNode mergeList(ListNode a, ListNode b) { ListNode helper = new ListNode(-1); ListNode cur = helper; while(a!=null && b!=null){ if(a.val<=b.val){ cur.next = a; a= a.next; }else{ cur.next = b; b= b.next; } cur = cur.next; } if(a!=null){ cur.next = a; } if(b!=null) { cur.next = b; } return helper.next; }}
0 0
- LeetCode(148)Sort List
- LeetCode: Sort List [148]
- LeetCode 148 Sort List
- [leetcode 148] Sort List
- [LeetCode 148]Sort List
- leetcode-148 Sort List
- Leetcode 148 Sort List
- LeetCode 148: Sort List
- 【leetcode 148 Sort List】
- Leetcode[148]-Sort List
- Sort List - LeetCode 148
- Leetcode# 148 Sort List
- Leetcode # 148 Sort List
- LeetCode(148) Sort List
- leetcode 148: Sort List
- [Leetcode]#148 Sort List
- 148 Sort List [Leetcode]
- LeetCode 148 Sort List
- 数组的创建方式
- POJ 3070 Fibonacci 【矩阵快速幂取模 (模板)】
- Android:得到手机上安装的所有应用的名字以及应用所在的包名
- Linux -- shell 脚本
- matlab里面如何保留小数特定位数
- leetcode(148):Sort List
- Java基础静态方法
- VS2015使用小技巧 控制台代码写完后生成的exe程序在哪里
- Prim算法和Kruskal算法(最小生成树)
- 近期小结
- http://www.cnblogs.com/nzbbody/p/3504199.html
- Java基础方法的初使用规则
- poj 1486 网络流+tarjan
- zigzag数组的C语言实现