First Day Where You Have Been in All the Rooms LeetCode solution in Python

1
class Solution:
2
def firstDayBeenInAllRooms(self, nextVisit: List[int]) -> int:
3
n: int = len(nextVisit)
4
days: List[int] = n * [
5
0
6
] # days[i] is the number of days it takes to first reach room i
7
MOD = pow(10, 9) + 7
8
for i in range(0, n - 1):
9
# First we are already at room i. days[i] days has passed
10
days[i + 1] = days[i]
11
# lets go from room i to room i+1.
12
# When we first visit room i, we need to visit room i again (so room i is visited twice, which is an even number), then we can visit room i+1
13
# after we fist visit room i, the next day we will visit room (nextVisit[i]).
14
days[i + 1] = (days[i + 1] + 1) % MOD
15
# Then the problem becomes "how to go from room (nextVisit[i]) back to room i". The step is (days[i] - days[nextVisit[i]])
16
days[i + 1] = (days[i + 1] + days[i] - days[nextVisit[i]]) % MOD
17
# Then, in the next day we go from room i to i+1
18
days[i + 1] = (days[i + 1] + 1) % MOD
19

20
return days[n - 1]

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0