我的LeetCode代码仓:https://github.com/617076674/LeetCode
原题链接:https://leetcode-cn.com/problems/reorder-list/description/
题目描述:
知识点:双指针、链表
思路:用快慢双指针遍历链表区分链表的前半部分和后半部分
借鉴LeetCode141——环形链表和LeetCode142——环形链表II中的思路二,我们用快慢双指针遍历链表以区分链表的前半部分和后半部分。参照代码,慢指针cur2移动一步,则快指针cur3移动2步。
以示例1为例(链表中节点个数是偶数个):-1 -> 1 -> 2 -> 3 -> 4,其中-1是我们设立的虚拟头节点,也是cur2和cur3指针的共同起点。当cur3到达4节点时,遍历结束,此时cur2在2节点,其后半部分节点从cur2.next节点开始。
以示例2为例(链表中节点个数是奇数个):