148. Sort List | Java最短代码实现
2016-03-16 10:17
676 查看
原题链接:148. Sort List
【思路】
本题考查归并排序。由于没有random access指针,那么显然是不是合快排。归并排序的基本思想:找到链表的mid节点,然后递归前半部分和后半部分分别进行归并排序,每次排完序之后都要对排好序的链表进行归并:
cases passed. Runtime: 8
ms Your runtime beats 42.29% of javasubmissions.
欢迎优化!
【思路】
本题考查归并排序。由于没有random access指针,那么显然是不是合快排。归并排序的基本思想:找到链表的mid节点,然后递归前半部分和后半部分分别进行归并排序,每次排完序之后都要对排好序的链表进行归并:
public ListNode sortList(ListNode head) { if (head == null || head.next == null) return head; ListNode mid = getMidListNode(head); ListNode list2 = mid.next; mid.next = null; return mergeList(sortList(head), sortList(list2)); } private ListNode mergeList(ListNode list1, ListNode list2) { ListNode dummyHead = new ListNode(0); ListNode curr = dummyHead; while (list1 != null && list2 != null) { if (list1.val < list2.val) { curr.next = list1; list1 = list1.next; } else { curr.next = list2; list2 = list2.next; } curr = curr.next; } curr.next = list1 != null ? list1 : list2; return dummyHead.next; } private ListNode getMidListNode(ListNode head) { ListNode slow = head, fast = head; while (fast.next != null && fast.next.next != null) { slow = slow.next; fast = fast.next.next; } return slow; }15 / 15 test
cases passed. Runtime: 8
ms Your runtime beats 42.29% of javasubmissions.
欢迎优化!
相关文章推荐
- Spring连接数据库整合-实例
- SpringMVC——实现拦截器
- Ajax跨域(jsonp) 调用JAVA后台
- 【java基础】Java内部类详解
- Monitor the changes in EOImpl.java side
- java 编程思想 笔记摘录
- Spring整合Hibernate详细步骤
- Java Socket编程
- Java NIO系列教程(二) Channel
- Spring AOP 注解添加操作日志
- Java对象的强、软、弱和虚引用(二)
- 解决:ubuntu下eclipse的maven项目报错:Maven Dependencies
- Java NIO系列教程(一) Java NIO 概述
- JAVA中 成员变量和和实例变量一样吗?
- Java并发编程:Thread类的使用
- struts2拦截器
- Java判断两个二叉树是否相同
- Spring Bean 的作用域
- Eclipse 常用快捷键
- Java 字符串(一条日志信息)解析实例