From 9e13168a2071f3898462c13df477bea84810c36c Mon Sep 17 00:00:00 2001 From: Aarya Joshi Date: Sat, 17 Oct 2026 10:27:23 +0530 Subject: [PATCH] Optimize has_loop using Floyd's cycle detection Refactor has_loop method to use Floyd's Tortoise and Hare algorithm for loop detection. --- data_structures/linked_list/has_loop.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/data_structures/linked_list/has_loop.py b/data_structures/linked_list/has_loop.py index a25204e3c4ce..70c9aed96fbb 100644 --- a/data_structures/linked_list/has_loop.py +++ b/data_structures/linked_list/has_loop.py @@ -37,13 +37,17 @@ def has_loop(self) -> bool: >>> root_node.has_loop True """ - try: - list(self) - return False - except ContainsLoopError: - return True + slow = self + fast = self + while fast is not None and fast.next_node is not None: + slow = slow.next_node + fast = fast.next_node.next_node + if slow is fast: + return True + + return False if __name__ == "__main__": root_node = Node(1) root_node.next_node = Node(2)