给定一个单链表 L 的头节点 head ,单链表 L 表示为:
L0 → L1 → … → Ln - 1 → Ln
请将其重新排列后变为:L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
解题思路
- 找中间节点
- 快慢指针
- 总长度 / 2
- 翻转后半部分的链表
- 前半部分与后半部分逐一拼接
如下:
代码:
function reorderList(head: ListNode | null): void<