Solution: Circular Array Loop
Let's solve the Circular Array Loop problem using the Fast and Slow Pointers pattern.
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]