Finding the Middle Node
The standard one-pass solution uses slow and fast pointers. Slow advances one node at a time while fast advances two. When fast reaches the end, slow is positioned at the middle.
Time complexity: O(n).
Auxiliary space: O(1).
For an odd-length list, slow identifies the unique middle.
For an even-length list, this initialization returns the second middle node.
The choice of first or second middle can be changed by adjusting the pointer initialization or loop condition.