solve(values) builds a singly linked list L0 → L1 → … → Ln and reorders it, in place,
to L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …. Return the values of the reordered list. You may
not change node values, only the links.
It is three techniques in a row: find the middle with slow / fast pointers, reverse
the second half, then interleave the two halves one node at a time.
Examples
solve([1,2,3,4]) → [1,4,2,3]
solve([1,2,3,4,5]) → [1,5,2,4,3]
solve([1,2]) → [1,2]Sample tests