First Day Where You Have Been in All the Rooms - Problem
There are n rooms you need to visit, labeled from 0 to n - 1. Each day is labeled, starting from 0. You will go in and visit one room a day.
Initially on day 0, you visit room 0. The order you visit the rooms for the coming days is determined by the following rules and a given 0-indexed array nextVisit of length n:
- Assuming that on a day, you visit room
i, - if you have been in room
ian odd number of times (including the current visit), on the next day you will visit a room with a lower or equal room number specified bynextVisit[i]where0 <= nextVisit[i] <= i; - if you have been in room
ian even number of times (including the current visit), on the next day you will visit room(i + 1) mod n.
Return the label of the first day where you have been in all the rooms. It can be shown that such a day exists. Since the answer may be very large, return it modulo 10^9 + 7.
Input & Output
Example 1 — Basic Two Rooms
$
Input:
nextVisit = [0,0]
›
Output:
2
💡 Note:
Day 0: visit room 0 (1st time) → next: room 0. Day 1: visit room 0 (2nd time) → next: room 1. Day 2: visit room 1 (1st time) → all rooms visited, return 2
Example 2 — Three Rooms
$
Input:
nextVisit = [0,0,2]
›
Output:
6
💡 Note:
Must visit room 0 and 1 multiple times before reaching room 2 for the first time on day 6
Example 3 — Single Room
$
Input:
nextVisit = [0]
›
Output:
0
💡 Note:
Only one room, visited on day 0, so return 0
Constraints
- 1 ≤ nextVisit.length ≤ 105
- 0 ≤ nextVisit[i] ≤ i
Visualization
Tap to expand
Understanding the Visualization
1
Input
Array nextVisit defines where to go after odd visits
2
Rules
Odd visits → go to nextVisit[i], Even visits → go to next room
3
Output
First day when all rooms have been visited
Key Takeaway
🎯 Key Insight: Each room requires exactly two visits before advancing to the next room
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code