本题可以用取巧的方法,将所有的节点数值都复制到一个数组之中,然后根据题意重新创建一个链表。
在这里我们写一下严格的in-place的解法。
我们第一步是需要将原链表拆解成若干个独立的子链表,各个子链表的长度分别是1,2,3,... 注意到最后一个链表的长度不定。我们将所有子链表的头指针放入数组heads,并且将所有子链表的长度放入数组lens
第二步就是对长度为偶数的子链表做反转操作。这是一个经典考点。
最后就是把所有的子链表串联起来。具体的就是将前一个子链表的尾节点,与下一个子链表的头节点相连。