[LeetCode]143. Reorder List
2016-12-28 15:01
302 查看
https://leetcode.com/problems/reorder-list/
三步:1、找到中点;2、反转后半部分;3、将后半部分依次插入到前半部分
public class Solution {
public void reorderList(ListNode head) {
ListNode pre = new ListNode(0);
pre.next = head;
ListNode fast = pre;
ListNode slow = pre;
while (fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
}
ListNode h2 = reverse(slow.next);
slow.next = null;
merge(head, h2);
}
private ListNode merge(ListNode h1, ListNode h2) {
ListNode pre = new ListNode(0);
ListNode runner = pre;
while (h2 != null ) {
ListNode t1 = h1.next;
ListNode t2 = h2.next;
runner.next = h1;
h1.next = h2;
h1 = t1;
runner = h2;
h2 = t2;
}
runner.next = h1;
return pre.next;
}
private ListNode reverse(ListNode head) {
ListNode pre = null;
while (head != null) {
ListNode next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
}
三步:1、找到中点;2、反转后半部分;3、将后半部分依次插入到前半部分
public class Solution {
public void reorderList(ListNode head) {
ListNode pre = new ListNode(0);
pre.next = head;
ListNode fast = pre;
ListNode slow = pre;
while (fast != null && fast.next != null) {
fast = fast.next.next;
slow = slow.next;
}
ListNode h2 = reverse(slow.next);
slow.next = null;
merge(head, h2);
}
private ListNode merge(ListNode h1, ListNode h2) {
ListNode pre = new ListNode(0);
ListNode runner = pre;
while (h2 != null ) {
ListNode t1 = h1.next;
ListNode t2 = h2.next;
runner.next = h1;
h1.next = h2;
h1 = t1;
runner = h2;
h2 = t2;
}
runner.next = h1;
return pre.next;
}
private ListNode reverse(ListNode head) {
ListNode pre = null;
while (head != null) {
ListNode next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
}
相关文章推荐
- LeetCode 143. Reorder List
- [Leetcode] 143. Reorder List 解题报告
- Leetcode- 143. Reorder List
- 【Leetcode】143. Reorder List
- leetcode143. Reorder List
- leetcode 143. Reorder List
- [leetcode]143. Reorder List
- LeetCode 143. Reorder List
- LeetCode 143. Reorder List
- LeetCode143. Reorder List
- *Leetcode 143. Reorder List | 链表
- LeetCode 143. Reorder List
- Leetcode 143. Reorder List
- leetcode 143. Reorder List 双指针
- leetcode ---- 143. Reorder List
- [leetcode] 143. Reorder List 解题报告
- [leetcode]143. Reorder List -- JavaScript 代码
- [LeetCode] 143. Reorder List
- [LeetCode] 143. Reorder List
- Leetcode-143. Reorder List