LintCode : 链表排序
来源:互联网 发布:java 预测算法 编辑:程序博客网 时间:2024/05/21 09:06
链表排序
- 描述
- 笔记
- 数据
- 评测
在 O(n log n) 时间复杂度和常数级的空间复杂度下给链表排序。
您在真实的面试中是否遇到过这个题?
Yes
样例
给出 1->3->2->null
,给它排序变成 1->2->3->null
.
挑战
标签
相关题目
- 合并排序
/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { * this.val = val; * this.next = null; * } * } */ public class Solution { /** * @param head: * The head of linked list. * @return: You should return the head of the sorted linked list, using * constant space complexity. */ public ListNode sortList(ListNode head) { // write your code here if (head == null || head.next == null) { return head; } ListNode mid = findMiddenNode(head); ListNode right = mid.next; mid.next = null; ListNode sortLeft = sortList(head); ListNode sortRight = sortList(right); return mergeSort(sortLeft, sortRight); } public static ListNode findMiddenNode(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 mergeSort(ListNode left, ListNode right) { ListNode head = new ListNode(-1); ListNode res = head; while (left != null && right != null) { if (left.val > right.val) { res.next = right; right = right.next; res = res.next; } else { res.next = left; left = left.next; res = res.next; } } if (left != null) { res.next = left; } if (right != null) { res.next = right; } return head.next; }}
0 0
- LintCode : 链表排序
- lintcode,链表排序
- LintCode 链表排序
- 链表排序-LintCode
- lintcode--链表排序
- 链表排序 -lintcode
- lintcode链表排序
- LintCode 链表插入排序
- lintcode-链表插入排序
- LintCode-链表插入排序
- 链表插入排序 lintcode
- LintCode 98-链表排序
- LintCode 链表插入排序
- 链表插入排序-LintCode
- LintCode 链表插入排序
- [LintCode]98.链表排序
- 链表插入排序-LintCode
- LintCode 合并两个排序链表
- Java String.split()用法小结
- Zookeeper的ACL控制探讨
- 网络——使用HTTP 协议访问网络
- 教你解决虚拟机CentOS 7"线缆被拔出"
- 听指挥的小孩——项目拾金(一)
- LintCode : 链表排序
- JAVA 线程池
- 如何利用session在页面中调用
- 图像处理与计算机视觉基础相关领域的经典书籍以及论文
- 转行做游戏(2) Kbengine serverapp结构初步解析
- FindBug异常总结
- c#递归方法调用
- 新手常见问题解答
- 无题