LeetCode 143 Reorder List
2014-06-21 09:34
357 查看
Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
You must do this in-place without altering the nodes' values.
For example,
Given
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
You must do this in-place without altering the nodes' values.
For example,
Given
{1,2,3,4}, reorder it to
{1,4,2,3}.
public class Solution { public ListNode inverseList(ListNode head) { if (head == null || head.next == null) return head; ListNode dumny = new ListNode(-1); ListNode p = head; ListNode cur; while (p != null) { cur = p; p = p.next; cur.next = dumny.next; dumny.next = cur; } return dumny.next; } public void reorderList(ListNode head) { if (head == null || head.next == null || head.next.next == null) return; ListNode p = head; ListNode q = head; ListNode tmp = null; while (q != null) { tmp = p; p = p.next; if (q.next != null) q = q.next.next; else {// 注意要将前面的部分和后面要逆置的部分要断开 tmp.next = null;// 链表总长度为奇数时,断开 break; } if (q == null) tmp.next = null;// 链表总长度为偶数时,断开 } q = inverseList(p); p = head; while (p != null && q != null) { tmp = q.next; q.next = p.next; p.next = q; q = tmp; p = p.next.next; } } }
相关文章推荐
- LeetCode 143 Reorder List
- Java for LeetCode 143 Reorder List
- leetcode[143]Reorder List
- leetcode-Reorder List-143
- LeetCode(143) Reorder List
- LeetCode 143 Reorder List Add to List
- LeetCode 143 Reorder List (链表 Map或快慢指针 推荐)
- (Leetcode 143 )Reorder List
- [LeetCode]题解(python):143-Reorder List
- leetcode[143]:Reorder List
- 【LEETCODE】143- Reorder List [Python]
- [LeetCode]143 Reorder List
- Reorder List - LeetCode 143
- [leetcode-143]Reorder List(c)
- 链表 leetcode 143 Reorder List
- [Leetcode]#143 Reorder List
- 【leetcode】【单链表】【143】Reorder List
- LeetCode143:Reorder List
- leetcode 143 —— Reorder List
- leetcode || 143、Reorder List