You are given the head of a singly linked-list. The list can be represented as: L0 -> L1 -> ... -> Ln-1 -> Ln. Reorder the list to be on the following form: L0 -> Ln -> L1 -> Ln-1 -> L2 -> Ln-2 -> ... You may not modify the values in the list's nodes. Only nodes themselves may be changed.
Example 1
Input: head = [1,2,3,4]
Output: [1,4,2,3]
Explanation: Alternate between the front and the back: 1 (first), 4 (last), 2 (second), 3 (second-to-last).
Example 2
Input: head = [1,2,3,4,5]
Output: [1,5,2,4,3]
Explanation: Alternating front and back gives 1, 5, 2, 4, and the middle node 3 comes last.
Example 3
Input: head = [1]
Output: [1]
Explanation: A single node stays where it is.
Split the list at the middle, reverse the second half, then weave the two halves together one node at a time.
Run checks all cases above. Submit evaluates all test cases.