Floyd의 사이클 탐지는 서로 다른 속도로 움직이는 두 포인터를 사용하여 시퀀스(연결 리스트 같은)에서 루프를 찾습니다. 사이클이 존재하면 빠른 포인터가 결국 한 바퀴 앞서 느린 포인터와 만납니다. O(1) 추가 공간을 사용합니다.
개념
느린(slow) 포인터는 한 걸음, 빠른(fast) 포인터는 두 걸음 움직입니다. 사이클 안에서는 간격이 매 걸음 하나씩 줄어들므로 반드시 충돌합니다. 사이클이 없으면 빠른 포인터가 끝에 도달합니다.
예시
python
():
slow = fast = head
fast fast.:
slow = slow.
fast = fast..
slow fast:
