Circular Array Loop
Explore how to detect cycles in a circular array of integers using fast and slow pointers. Learn to identify repeating sequences that move forward or backward, ensuring all cycle elements share the same sign and meet length criteria. This lesson strengthens your understanding of cycle detection in coding interviews.
We'll cover the following...
Statement
There is a circular list of non-zero integers called nums. Each number in the list tells you how many steps to move forward or backward from your current position:
If
nums[i]is positive, movenums[i]steps forward.If
nums[i]is negative, movenums[i]steps backward.
As the list is circular:
Moving forward from the last element takes you back to the first element.
Moving backward from the first element takes you to the last element.
A cycle in this list means:
You keep moving according to the numbers, and you end up repeating a sequence of indexes.
All numbers in the cycle have the same sign (either all positive or all negative).
The cycle length is greater than 1 (it involves at least two indexes).
Return true if such a cycle exists in the list or false otherwise.
Constraints:
-
nums.length -
nums[i] nums[i]
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:
Circular Array Loop
(True or False) The following array contains a cycle.
[3, -3, 2, -2]
True
False
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.
Try it yourself
Implement your solution in the following coding playground.
import java.util.*;public class Solution{public static boolean circularArrayLoop(int[] nums) {// Replace this placeholder return statement with your codereturn false;}}