- is a type of [[Two Pointers|Two Pointer]] technique - idea is to have two pointers that move at different speeds during iteration, or start at different locations, or any other abstract difference - most famous use is to check if linked list has a cycle - fast pointer will touch slow pointer if there is a cycle - otherwise fast pointer will hit None - **get middle of linked list, ends in right half last index** - also at end, niche fact) if not fast: list is odd, elif not fast.next: list is even ``` slow = fast = head while fast and fast.next: fast = fast.next.next slow = slow.next curr = slow ```