描述
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}.
分析
分四步:
- 遍历链表获得长度
- 找到链表中点,断开成两个链表
- 翻转第二个链表
- 将两个链表合并
时间复杂度O(n)
,空间O(1)
。
代码
Python
1 | # Definition for singly-linked list. |