diff --git a/apps/docs/content/(hash-table)/141-linked-list-cycle.mdx b/apps/docs/content/(hash-table)/141-linked-list-cycle.mdx new file mode 100644 index 0000000..996012b --- /dev/null +++ b/apps/docs/content/(hash-table)/141-linked-list-cycle.mdx @@ -0,0 +1,56 @@ +--- +title: '141. Linked List Cycle' +description: Given head, the head of a linked list, determine if the linked list has a cycle in it +sidebar: + label: 'Linked List Cycle' + badge: 'Easy' +--- + +Linked List + +::::warning +Can you solve it using O(1) (i.e. constant) memory? +:::: + +### Example 1: +- Input: `head = [3,2,0,-4], pos = 1` +- Output: `true` +- Explanation: There is a cycle in the linked list, where the tail connects to the 1st node (0-indexed). + +### Example 2: +- Input: `head = [1,2], pos = 0` +- Output: `true` +- Explanation: There is a cycle in the linked list, where the tail connects to the 0th node. + +### Example 3: +- Input: `head = [1], pos = -1` +- Output: `false` +- Explanation: There is no cycle in the linked list. + +### Constraints: + +- The number of the nodes in the list is in the range [0, 10^4]. +- `-10^5 <= Node.val <= 10^5` +- pos is -1 or a valid index in the linked-list. + +## Solution + +```py +# Definition for singly-linked list. +# class ListNode: +# def __init__(self, x): +# self.val = x +# self.next = None + + +class Solution: + def hasCycle(self, head: Optional[ListNode]) -> bool: + fast = slow = head + + while fast and fast.next: + fast = fast.next.next + slow = slow.next + if fast is slow: + return True + return False +```