Reorder List 链表重排
来源:互联网 发布:淘宝店铺代装修 编辑:程序博客网 时间:2024/06/06 02:13
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 {1,2,3,4}
, reorder it to {1,4,2,3}
.
首先分析一下它的重排规则。
它是把在最后面的部分倒着排上来了。
解法分为2步:
1. 找到链表的中间部分,翻转中间部分。(1,2,3,4,5的话,是4,5翻转;1,2,3,4的话,是4翻转)
这用快慢指针实现。
2. 将新翻转的节点一个一个插入原链表的前面部分。
运行时间:
代码:
public void reorderList(ListNode head) { if (head == null || head.next == null || head.next.next == null) { return; } ListNode fast = head, slow = head; while (fast != null && fast.next != null) { fast = fast.next.next; slow = slow.next; } ListNode reverseHead = reverseListIterative(slow.next); slow.next = null; ListNode cur = head, temp = null; while (reverseHead != null) { temp = reverseHead.next; reverseHead.next = cur.next; cur.next = reverseHead; cur = reverseHead.next; reverseHead = temp; } } public ListNode reverseListIterative(ListNode head) { if (head == null || head.next == null) { return head; } ListNode fakeNode = new ListNode(-1); fakeNode.next = head; ListNode cur = head.next, pre= head; while (cur != null) { pre.next = pre.next.next; cur.next = fakeNode.next; fakeNode.next = cur; cur = pre.next; } return fakeNode.next; }
1 0
- Reorder List 重排链表
- Reorder List 链表重排
- [LeetCode] 重排链表 reorder linked list
- [Lintcode]Reorder List 重排链表
- 【LeeCode】Reorder List 重排链表
- 99.Reorder List-重排链表(中等题)
- LeetCode-143. Reorder List (JAVA)重排链表
- Reorder List 重排字符串
- Reorder List 链表操作
- 重新排列链表Reorder List
- leetcode---reorder-list---链表中点、逆转
- Reorder List 链表首尾交叉排列@LeetCode
- LeetCode | Reorder List(链表重新排序)
- LeetCode OJ 之 Reorder List (重新排序链表)
- Reorder List 链表位置的变换 数组处理
- LeetCode 143. Reorder List(重组链表)
- 143.leetcode Reorder List (medium)[链表调整]
- Leetcode 143. Reorder List(链表重新排序)
- 网站架构经验随笔
- Xcode控制台输出json数据乱码转为中文
- 14个Xcode中常用的快捷键操作
- php缓存技术
- linux下ps命令 和 grep命令用法(原文http://blog.chedushi.com/archives/4007)
- Reorder List 链表重排
- 字节序之大小端模式
- volatile 关键字
- C# 计算程序用时
- Linux下查看文件内容的命令
- 7-113 动物对象进化——类的继承
- Java类型和本地类型对应
- JSP中的公共菜单模板选中状态的添加
- C++常见容器的迭代器类型