Coding questions · Uber
Find shortest jumps in circular array
This question evaluates graph-traversal and modular arithmetic skills by requiring modeling a circular array as a state graph and determining reachability and minimum-distance jumps under wrap-around constraints.
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.
Find Shortest Jumps in Circular Array
Constraints
- 1 <= len(arr) <= 200000
- 0 <= arr[i] <= 10^9
- 0 <= start, target < len(arr)
Hints
- Treat each index as a node in a graph, with up to two outgoing edges to the indices you can jump to.
- Since every jump has the same cost, a level-by-level traversal helps find the minimum number of jumps.