From 804ad1379e961dad0d3baa7fbcaa4b9a1f321f6f Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Mon, 31 Aug 2026 12:08:29 -0400 Subject: [PATCH] feat(work): add solution for LeetCode 141 Linked List Cycle --- .../Easy/Hash Table/141.linked-list-cycle.py | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 work/1/Easy/Hash Table/141.linked-list-cycle.py diff --git a/work/1/Easy/Hash Table/141.linked-list-cycle.py b/work/1/Easy/Hash Table/141.linked-list-cycle.py new file mode 100644 index 0000000..ae7c421 --- /dev/null +++ b/work/1/Easy/Hash Table/141.linked-list-cycle.py @@ -0,0 +1,73 @@ +""" +141. Linked List Cycle +Difficulty: Easy +https://leetcode.com/problems/linked-list-cycle/ + +────────────────────────────────────────────────── + +Given head, the head of a linked list, determine if the linked list +has a cycle in it. + +There is a cycle in a linked list if there is some node in the list +that can be reached again by continuously following the next pointer. +Internally, pos is used to denote the index of the node that tail's +next pointer is connected to. Note that pos is not passed as a +parameter. + +Return true if there is a cycle in the linked list. Otherwise, return +false. + + + +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. + + + +Follow up: Can you solve it using O(1) (i.e. constant) memory? +""" + +# 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