Fast and slow pointers
Also written: slow and fast pointers
Walking a linked list with two references, one moving a node per step and one moving two. When the fast one reaches the end, the slow one is at the middle, and if the list has a cycle they meet.