File tree Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Expand file tree Collapse file tree 1 file changed +53
-0
lines changed Original file line number Diff line number Diff line change
1
+ from typing import Optional
2
+
3
+ # Definition for singly-linked list.
4
+ class ListNode :
5
+ def __init__ (self , x ):
6
+ self .val = x
7
+ self .next = None
8
+
9
+ class Solution :
10
+ """
11
+ - Time Complexity: O(n), n = The number of nodes
12
+ - Space Complexity: O(1)
13
+ """
14
+ def hasCycle (self , head : Optional [ListNode ]) -> bool :
15
+ if not head :
16
+ return False
17
+
18
+ slow , fast = head , head
19
+ while slow and fast :
20
+ slow = slow .next
21
+ if fast .next :
22
+ fast = fast .next .next
23
+ else :
24
+ return False
25
+
26
+ if fast == slow :
27
+ return True
28
+
29
+ return False
30
+
31
+ # Run Test Cases
32
+ def do_test ():
33
+ sol = Solution ()
34
+
35
+ h1 = ListNode (3 )
36
+ h1 .next = ListNode (2 )
37
+ h1 .next .next = ListNode (0 )
38
+ h1 .next .next = ListNode (- 4 )
39
+ h1 .next .next .next = h1 .next
40
+ r1 = sol .hasCycle (h1 )
41
+ print (f"TC 1 is Passed!" if r1 == True else f"TC 1 is Failed!" )
42
+
43
+ h2 = ListNode (1 )
44
+ h2 .next = ListNode (2 )
45
+ h2 .next .next = h2
46
+ r2 = sol .hasCycle (h2 )
47
+ print (f"TC 2 is Passed!" if r2 == True else f"TC 2 is Failed!" )
48
+
49
+ h3 = ListNode (1 )
50
+ r3 = sol .hasCycle (h3 )
51
+ print (f"TC 3 is Passed!" if r3 == False else f"TC 3 is Failed!" )
52
+
53
+ do_test ()
You can’t perform that action at this time.
0 commit comments