8 間牢房排成一排,每間牢房不是有人住就是空著。
每天,無論牢房是被占用或空置,都會根據以下規則進行更改:
如果一間牢房的兩個相鄰的房間都被占用或都是空的,那麼該牢房就會被占用。
否則,它就會被空置。
(請注意,由於監獄中的牢房排成一行,所以行中的第乙個和最後乙個房間無法有兩個相鄰的房間。)
我們用以下方式描述監獄的當前狀態:如果第 i 間牢房被占用,則 cell[i]1,否則 cell[i]0。
根據監獄的初始狀態,在 n 天後返回監獄的狀況(和上述 n 種變化)。
import j**a.util.hashmap;
import j**a.util.map;
class solution
return ans;
}private int toarray(int x)
return ans;
}private int next(int cells)
}return ans;
}private int next(int x)
return ans;
}public int prisonafterndays(int cells, int n)
hash[index] = x;
map.put(x, index++);
}if (index == n + 1)
/*** 迴圈節的第乙個元素的下標
*/int startindex = map.get(x);
/*** 迴圈節的長度
*/// 1 2 3 4 5 6 7
int circlelength = index - startindex;
/*** 去除前面不是迴圈節的部分
*/n -= (startindex - 1);
/*** 在迴圈節的第乙個數
*/int rank = n % circlelength == 0 ? circlelength : n % circlelength;
x = hash[startindex + rank - 1];
return toarray(x);
}}
Leetcode 957 N天後的牢房
8 間牢房排成一排,每間牢房不是有人住就是空著。每天,無論牢房是被占用或空置,都會根據以下規則進行更改 如果一間牢房的兩個相鄰的房間都被占用或都是空的,那麼該牢房就會被占用。否則,它就會被空置。請注意,由於監獄中的牢房排成一行,所以行中的第乙個和最後乙個房間無法有兩個相鄰的房間。我們用以下方式描述監...
LeetCode 957 N天後的牢房
題目描述 8 間牢房排成一排,每間牢房不是有人住就是空著。每天,無論牢房是被占用或空置,都會根據以下規則進行更改 如果一間牢房的兩個相鄰的房間都被占用或都是空的,那麼該牢房就會被占用。否則,它就會被空置。請注意,由於監獄中的牢房排成一行,所以行中的第乙個和最後乙個房間無法有兩個相鄰的房間。我們用以下...
Leetcode 957 N天後的牢房
leetcode 957.n天後的牢房 8間牢房排成一排,每間牢房不是有人住就是空著。每天,無論牢房是被占用或空置,都會根據以下規則進行更改 如果一間牢房的兩個相鄰的房間都被占用或都是空的,那麼該牢房就會被占用。否則,它就會被空置。請注意,由於監獄中的牢房排成一行,所以行中的第乙個和最後乙個房間無法...