题目
题目不难,很容易找到思路,比较坑的是找循环节。(一个小技巧,给的Example1中有七个数据,从这个数字开始到双倍、三倍)一般题目不会无端给这么多测试数据的
代码部分一(12ms 85.61%)
class Solution {
public int[] prisonAfterNDays(int[] cells, int N) {
if(N <= 0) return cells;
if(N%14 == 0){
N = 14;
}else {
N = N%14;
}
while(N > 0){
int[] res = new int[8];
res[0] = 0;
res[7] = 0;
for(int i = 1; i < 7; i++){
res[i] = (cells[i-1] ^ cells[i+1]) ^ 1;
}
cells = res;
N--;
}
return cells;
}
}
代码部分二(11ms 100%)
class Solution {
public int[] prisonAfterNDays(int[] cells, int N) {
if(N = 0) return cells;
if(N%14 == 0){
N = 14;
}else {
N = N%14;
}
while(N 0){
int[] res = new int[8];
res[0] = 0;
res[7] = 0;
for(int i = 1; i 7; i++){
if(cells[i-1] == cells[i+1]) res[i] = 1;
else res[i] = 0;
}
cells = res;
N--;
}
return cells;
}
}