- 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
```