143. Reorder List
Posted 我的名字叫周周
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了143. Reorder List相关的知识,希望对你有一定的参考价值。
/* * 143. Reorder List * 11.28 by Mingyang 总体思想就是后半部分reverse然后再merge */ public void reorderList(ListNode head) { if (head == null) return; ListNode slow = head; ListNode fast = head; while (fast != null && fast.next != null) { slow = slow.next; fast = fast.next.next; } ListNode tem = slow.next; slow.next = null; // 这里用了下面brink的代码 ListNode ne = reverseList(tem); mergeLists(head, ne); } public void mergeLists(ListNode l1, ListNode l2) { if (l1 == null && l2 == null) return; while (l1 != null && l2 != null) { ListNode tem = l1.next; ListNode ne = l2.next; l1.next = l2; // 这一步很重要,因为如果l2的下一个不能指向null l2.next = tem == null ? ne : tem; l1 = tem; l2 = ne; } }
以上是关于143. Reorder List的主要内容,如果未能解决你的问题,请参考以下文章