## Description

https://leetcode.com/problems/palindrome-linked-list/

Given a linked list, determine if it has a cycle in it.

To represent a cycle in the given linked list, we use an integer `pos`

which represents the position (0-indexed) in the linked list where tail connects to. If `pos`

is `-1`

, then there is no cycle in the linked list.

**Example 1:**

Input:head = [3,2,0,-4], pos = 1Output:trueExplanation:There is a cycle in the linked list, where tail connects to the second node.

**Example 2:**

Input:head = [1,2], pos = 0Output:trueExplanation:There is a cycle in the linked list, where tail connects to the first node.

**Example 3:**

Input:head = [1], pos = -1Output:falseExplanation:There is no cycle in the linked list.

## Explanation

If any of the node has been visited, the linked list has a cycle.

## Python Solution

```
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def hasCycle(self, head: ListNode) -> bool:
visited = set()
while head != None:
if head not in visited:
visited.add(head)
else:
return True
head = head.next
return False
```

- Time complexity: O(N).
- Space complexity: O(N).

## One Thought to “LeetCode 141. Linked List Cycle”