【题解】剑指 Offer II 026. 重排链表(双指针)(快慢指针)
题目链接
力扣
题目描述
给定一个单链表 L 的头节点 head ,单链表 L 表示为:
L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为:
L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 1:
输入: head = [1,2,3,4] 输出: [1,4,2,3] 示例 2:
输入: head = [1,2,3,4,5] 输出: [1,5,2,4,3]
提示:
链表的长度范围为 [1, 5 * 104] 1 <= node.val <= 1000
解题思路
如果想让空间复杂度为0,可以利用找出终点,后半段翻转链表,然后两链表合并的方法
找到中点mid应该找到终点的前一个节点,然后后半部分取mid->next,取完后记得要让mid->next==NULL,因为要将链表断开,否则后面的操作会出错
翻转链表可以先让sl
共有 0 条评论