148. Sort List--单链表自底向上归并排序
来源:互联网 发布:java微信公众开发项目 编辑:程序博客网 时间:2024/06/05 17:07
Sort a linked list in O(n log n) time using constant space complexity.
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode sortList(ListNode head) { return merge(head); } public ListNode merge(ListNode head){ //用于不断细分链表,然后迭代返回合并得最终一个有序链表。 if(head == null || head.next == null) return head; ListNode middle = getMiddle(head); ListNode second = middle.next; middle.next = null; return sorted(merge(head), merge(second)); } public ListNode sorted(ListNode a, ListNode b){ //用于将两组排序好的链表合并成新的排序好的链表 if(a == null) return b; if(b == null) return a; if(a.val < b.val){ a.next = sorted(a.next, b); return a; } else{ b.next = sorted(a, b.next); return b; } } public ListNode getMiddle(ListNode head){ //用于寻找链表中点 if(head == null) return head; ListNode slow = head; ListNode fast = head; while(fast.next != null && fast.next.next != null){ slow = slow.next; fast = fast.next.next; } return slow; }}
阅读全文
0 0
- 148. Sort List--单链表自底向上归并排序
- 自底向上归并排序
- 自底向上的归并排序
- 自底向上的归并排序
- 非递归 自底向上归并排序
- 自底向上的归并排序
- 自底向上的归并排序算法
- 归并排序-自底向上(java实现)
- 归并排序---Sort List
- 归并排序—自底向上和自顶向下
- 归并排序,自顶向下,自底向上
- 归并排序-自顶向下/自底向上
- 归并排序的自底向上改进-使用插入排序
- 148. Sort List 链表归并排序
- Leetcode:Sort List 对单链表归并排序
- 【leetcode 单链表归并排序】Sort List
- 【LeetCode】 sort list 单链表的归并排序
- LeetCode Sort List(单链表归并排序)
- C实现traceroute(MacOS & Linux系统)
- leetcode 655. Print Binary Tree 深度优先遍历DFS
- IntelliJ Idea SpringBoot jpa mysql数据库增删改查实例
- maven详细介绍
- 极光推送集成与封装
- 148. Sort List--单链表自底向上归并排序
- 微信支付,支付宝支付 iOS
- gulp自动添加版本号过程中的一些要点记录
- 深入理解Android之AOP
- Linux下jdk的安装
- jetty配置的两种方式
- activiti 工作流 动态 设置 指定 节点任务人、责任人、组 的实现方式
- Netty 4.0在Android 上的使用,长连接断线自动重连
- 大数据程序员培训 哪些才是你重点要学的?