04. Linked List Cycle
The problem can be found at the following link: Question Link
My Approach
Check if the
head
of the linked list isNULL
(i.e., the list is empty). If it is, returnfalse
because an empty list cannot have a cycle.Initialize two pointers,
fast
andslow
, both initially pointing to thehead
of the linked list. These pointers will be used to traverse the list.Enter a
while
loop that continues as long as both thefast
andfast->next
pointers are notNULL
. This condition ensures that thefast
pointer can move two steps ahead without causing a null reference error.Inside the loop: a. Move the
fast
pointer two steps ahead by assigningfast = fast->next->next
. b. Move theslow
pointer one step ahead by assigningslow = slow->next
.Check if the
fast
pointer is equal to theslow
pointer. If they are equal, this means that the two pointers have met at the same node within the linked list. This is an indication that a cycle exists in the linked list, so returntrue
.If the
fast
andslow
pointers do not meet within the loop, continue iterating through the linked list until one of the following conditions is met:The
fast
pointer reaches the end of the list (fast == NULL
orfast->next == NULL
). This means there is no cycle in the list, so returnfalse
.The
fast
andslow
pointers meet (indicating a cycle). In this case, the function returnstrue
within the loop.
If none of the conditions in step 7 are met and the loop exits, return
false
. This means that the entire linked list has been traversed, and no cycle has been detected.
The algorithm utilizes the fact that the fast
pointer moves at twice the speed of the slow
pointer. If there is a cycle, the fast
pointer will eventually catch up to the slow
pointer, indicating the presence of a cycle. If there is no cycle, the fast
pointer will reach the end of the list without intersecting the slow
pointer, and the function will return false
.
Time and Auxiliary Space Complexity
Time Complexity:
O(n)
Auxiliary Space Complexity:
O(1)
Code (C++)
Contribution and Support
For discussions, questions, or doubts related to this solution, please visit our discussion section. We welcome your input and aim to foster a collaborative learning environment.
If you find this solution helpful, consider supporting us by giving a ⭐ star
to the rishabhv12/Daily-Leetcode-Solution repository.
Last updated