Floyd’s Cycle Finding Algorithm (original) (raw)

Last Updated : 23 Jul, 2025

**Floyd's cycle finding algorithm or **Hare-Tortoise algorithm is a pointer algorithm that uses only **two pointers, moving through the sequence at different speeds. This algorithm is used to find a loop in a **linked list. It uses two pointers one moving **twice as **fast as the other one. The **faster one is called the fast pointer and the other one is called the slow pointer.

While traversing the linked list one of these things will occur-

Table of Content

**Floyd’s Cycle Finding Algorithm:

The idea is to start with the two pointers slow and **fast, both starting at the **head of the linked list.

For more details about the working of this algorithm, Please refer to this article Detect loop or cycle in a linked list.

How does Floyd's Algorithm works?

The algorithm is to start two pointers, **slow and **fast from head of linked list. We move slow one node at a time and fast two nodes at a time. If there is a loop, then they will definitely meet.

This approach works because of the following facts :

After each iteration where the **slow pointer moves one step forward and the **fast pointer moves two steps forward, the distance between the two pointers increases. Initially, if the **slow pointer is at a distance k from a certain point in the cycle, then after one iteration, the distance between the **slow and **fast pointers becomes k+1. After two iterations, this distance becomes k+2 and so on. As they continue to move within the cycle, this distance will eventually equal the cycle length **n. At this point, since the distance wraps around the cycle and both pointers are moving within the same cycle, they will meet.

For more details about the working & proof of this algorithm, Please refer to this article, How does Floyd's Algorithm works.

Find the Starting Node of a Cycle in a Linked List

To find the starting node of a cycle in a linked list, follow the steps below:

For more details about the working of this algorithm, Please refer to this article, Find the Starting Node of a Cycle in a Linked List.

Advantages :

**Related articles: