- Create a set to store the traversed node
- Return the node which is in the set
- Fast and slow pointers
- If fast pointer equals to slow pointer, set a new iteration from the head which is one move a time and fast pointer is made one move a time
- The next time they meet is the cycle begins