Search⌘ K
AI Features

Linked List Cycle

Explore how to detect cycles in a linked list by using fast and slow pointers. Learn to identify if a list revisits nodes, and implement solutions that return true if a cycle exists and false otherwise. Develop skills to solve linked list cycle problems commonly asked in coding interviews.

Statement

Given the head of a linked list, determine whether the list contains a cycle. A cycle exists if a node in the list can be revisited by continuously following the next pointers. Return TRUE if a cycle is present; otherwise, return FALSE.

Constraints:

Let n be the number of nodes in a linked list.

  • 00\leq n 500\leq500
  • 105-10^5 \leq Node.Value 105\leq 10^5

Examples

Understand the problem

Let’s take a moment to make sure you’ve correctly understood the problem. The quiz below helps you check if you’re solving the correct problem:

Linked List Cycle

1.

What is the output if the following linked list is given as an input?

image

A.

TRUE

B.

FALSE


1 / 3

Figure it out!

We have a game for you to play. Rearrange the logical building blocks to develop a clearer understanding of how to solve this problem.

Sequence - Vertical
Drag and drop the cards to rearrange them in the correct sequence.

1
2
3
4

Try it yourself

Implement your solution in the following coding playground.

Go
usercode > Solution.go
// The first input of the test case is an array of values representing a linked list.
// The second input is the index where the tail connects to form a cycle (or −1 if there's no cycle).
// This index is used only to construct the linked list and is not passed to the function.
// Definition for a Linked List node
// type ListNode struct {
// Val int
// Next *ListNode
// }
package main
import (. "golang-test-code/ds_v1/LinkedList")
func detectCycle(head *ListNode) bool {
// Replace this placeholder return statement with your code
return false
}
Linked List Cycle