核心思想
注意数据范围
0 <= nextVisit[i] <= i
也就是说 当前下标i只能去之前的地方
也就是说i+1 只能 通过 i 访问次数为偶数才能达到
定义 dp[i] 到达第i个房间的天数
那么要到达第i个房间的路径为
0 -> i-1 -> nextVisit[i-1] -> i-1 -> i
只有第二次达到i-1才能达到i
class Solution {
public int firstDayBeenInAllRooms(int[] nextVisit) {
final int MOD = (int) (1e9 + 7);
int len = nextVisit.length;
long[] dp = new long[len];
dp[0] = 0;
for(int i = 1; i < len; i++){
dp[i] = (2 * dp[i - 1] - dp[nextVisit[i - 1]] + 2 + MOD) % MOD;
}
return (int) dp[len - 1];
}
}
标签:1997,第一天,int,房间,中等,len,nextVisit,dp,MOD
From: https://www.cnblogs.com/ganyq/p/18109232