给定一个单链表的头节点,请实现原地重排,使得结果满足第一个节点、最后一个节点、第二个节点、倒数第二个节点……的顺序。例如 1->2->3->4 变为 1->4->2->3,1->2->3->4->5 变为 1->5->2->4->3。要求时间复杂度 O(n),空间复杂度 O(1)。请说明你的算法思路并写出代码。
考察说明
考察链表操作、双指针找中点、反转链表与合并的编码实现能力
回答思路
- 能正确使用快慢指针找到链表中间节点
- 能正确反转后半段链表
- 能正确交错合并两段链表并处理奇数长度节点
- 代码边界处理正确(空链表、单节点、双节点)
- 能分析时间复杂度和空间复杂度
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。