You are given a circular array arr of length n. From index i, you may jump exactly arr[i] steps either to the left or to the right (wrapping around the array), i.e. you can move to:
-
(i + arr[i]) mod n
-
(i - arr[i]) mod n
Given two indices start and target (0-based), return the minimum number of jumps needed to reach target starting from start. If it is impossible to reach target, return -1.
Clarifications:
-
Each jump uses the value at your current index to determine the exact jump distance.
-
The array is circular, so indices wrap around using modulo
n
.
Example:
-
arr = [2, 1, 2, 3]
,
start = 0
,
target = 3
-
From 0 you can go to 2 (right) or 2 (left) → 2
-
From 2 you can go to 0 or 0 → cannot reach 3 → return
-1
.
Implement a function to compute this minimum jump count.