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