解题思路
使用快慢双指针解决 将链表断开,存入数组中,此时得到一个有序的数组 定义left,rigjt指针,left从下标0开始执行,right从数组尾部执行 right进行左移,left进行右移 当left与right相差1时,将right左移到left + 1下
var reorderList = function(head) {
// 定义头节点,防止修改
let current = head
// 定义有序数组
let res = []
// 断开重组
while(current) {
const next = current.next
current.next = null
res.push(current)
current = next
}
// 定义左右节点
let [left, right] = [0, res.length - 1]
while(left < right) {
// left与right相差值为一
if (left + 1 !== right) res[right].next = res[left + 1];
res[left].next = res[right]
left++
right--
}
return res[0]
};