Skip to content
Linked ListMedium

23. Split List into Two Halves

Locates the middle using slow/fast pointers, then cuts slow.next = None to yield two sublists.

Time O(n) Space O(1)
Open in 3D Studio

Live loop — open the studio to scrub, add your own array, or race it in Battle Arena.

Asked in interviews at

TwitterMetaSnapchat

Reference implementation (Python)

def split_in_half(head):
    if not head or not head.next:
        return head, None
    slow, fast = head, head.next
    while fast and fast.next:
        slow, fast = slow.next, fast.next.next
    second_half = slow.next
    slow.next = None
    return head, second_half

Embed this visualization

Drop a live, looping 23. Split List into Two Halves canvas into a blog post or course page.

<iframe src="/embed/split-list-halves" width="100%" height="380" style="border:1px solid #e6e8ec;border-radius:14px" loading="lazy" title="3D algorithm visualization by CodeWithMunnaX"></iframe>

Frequently asked

What is the time and space complexity of 23. Split List into Two Halves?

23. Split List into Two Halves runs in O(n) time and O(1) auxiliary space.

Is the 23. Split List into Two Halves visualizer free?

The core 3D visualizer, Web Audio chimes and step intuition are free. A one-time ₹49 Pro Pass unlocks advanced algorithms, large custom arrays, Battle Arena and reel export.

Which companies ask 23. Split List into Two Halves in interviews?

23. Split List into Two Halves shows up in interviews at Twitter, Meta, Snapchat.

How does the 3D visualization of 23. Split List into Two Halves work?

Each array value becomes a 3D pillar whose height maps to its value. Comparisons glow amber, swaps flash red, and settled elements lock green while a floating pointer badge tracks the active index — synchronized line-by-line with the Python code.

More Linked List