This practice workspace is built for desktop. Open it on a larger screen to start solving.
Reorder List
Given the head of a singly linked list L0 → L1 → ... → Ln-1 → Ln, reorder it to:
L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → ...
You may not modify the values in the nodes — only the next pointers.
Input/output convention for this exercise: the list is passed as an array of values; return the reordered list as an array of values. The starter provides ListNode, arrayToList, and listToArray to convert between forms.
The standard O(n)-time, O(1)-space approach has three phases: find the middle (slow/fast pointers), reverse the second half, then merge the two halves by alternating nodes.
Examples
Constraints
- 0 <= values.length <= 5 * 10^4
- 1 <= values[i] <= 1000
Preview Mode
This is a read-only preview of DSAMind's AI coaching. Sign up to get custom feedback on your own solution.
Your approach
- Pattern:Linked List
- Time:O(N)
- Space:O(1)
Complete approach — pattern and complexity both named.
Coach
What you got right
You correctly matched the sorted input requirement and implemented a linear-time scan using two pointers.
Where it diverged
No divergence detected. The code correctly aligns with the stated approach.
Next attempt: focus on
Try solving related sliding window problems to build familiarity with two-pointer variants.
Signals
No signals fired — clean run, you stayed in flow.