143. Reorder List | Java最短代码实现
2016-03-19 21:30
417 查看
原题链接:143. Reorder List
反转链表:206. Reverse Linked List | Java最短代码实现
【思路】
本题考查链表的归并、反转、查找中间结点等知识点。由于过程比较复杂,我的代码尽量写的逻辑清晰,以 [1, 2, 3, 4, 5, 6] 为例对代码进行剖析:
1.找到中间节点3,将链表划分为两部分:以head为头节点的 [1,2,3]、以head2为头节点的[4,5,6]
2.将head2指向的链表反转,得到[6,5,4]
3.归并两链表,得到 [1,6,2,5,3,4]:
cases passed. Runtime: 3
ms Your runtime beats 26.98% of javasubmissions.
欢迎优化!
反转链表:206. Reverse Linked List | Java最短代码实现
【思路】
本题考查链表的归并、反转、查找中间结点等知识点。由于过程比较复杂,我的代码尽量写的逻辑清晰,以 [1, 2, 3, 4, 5, 6] 为例对代码进行剖析:
1.找到中间节点3,将链表划分为两部分:以head为头节点的 [1,2,3]、以head2为头节点的[4,5,6]
2.将head2指向的链表反转,得到[6,5,4]
3.归并两链表,得到 [1,6,2,5,3,4]:
public class Solution { public void reorderList(ListNode head) { if (head == null) return; ListNode mid = getMidList(head); ListNode head2 = mid.next; mid.next = null; head2 = reverse(head2); mergeList(head, head2); } public ListNode mergeList(ListNode head1, ListNode head2) { ListNode head = head1; while (head2 != null) { ListNode head2Next = head2.next; head2.next = head1.next; head1.next = head2; head1 = head2.next; head2 = head2Next; if (head2Next != null) head2Next = head2Next.next; } return head; } public ListNode getMidList(ListNode head) { ListNode fast = head; ListNode slow = head; while (fast != null && fast.next != null) { fast = fast.next.next; slow = slow.next; } return slow; } public ListNode reverse(ListNode head) { if (head == null) return head; ListNode slow = head; ListNode fast = head.next; head.next = null; while (fast != null) { slow = fast; fast = fast.next; slow.next = head; head = slow; } return slow; }13 / 13 test
cases passed. Runtime: 3
ms Your runtime beats 26.98% of javasubmissions.
欢迎优化!
相关文章推荐
- java数组拷贝native方法
- # 20145210 《Java程序设计》第03周学习总结
- java中的匿名内部类总结
- Spring-Java检查型异常和非检查型异常
- Struts2 json
- Java 控制台输入输出
- Java并发编程:生产者消费者模式
- java - 流程控制
- Java - 运算符 - 数学工具包java.lang.Math类
- Java编程细节注意
- JDK中设计模式
- 【JAVA集合】EnumMap
- eclipse编码格式设置
- 第六届蓝桥杯 java C组 立方尾不变
- Spring和MyBatis环境整合
- RxJava入门学习笔记
- ## JDK源码--ArrayList
- HDU2017JAVA
- Windows 配置JAVA的环境变量
- SpringMVC 函数返回值问题,返回Json解决方法