当天数是100000的时候发生超时,可以推断一定有规律:从第一天开始,每14天重新循环一次。
class Solution {
public int[] prisonAfterNDays(int[] cells, int N) {
int prev=cells[0];
for(int j=1;j<=6;j++){
if(prev==cells[j+1]){
prev=cells[j];
cells[j]=1;
}else{
prev=cells[j];
cells[j]=0;
}
}
cells[0]=0;
cells[7]=0;
if(N==1){
return cells;
}
for(int i=1;i<=(N-1)%14;i++){
int pre=cells[0];
for(int j=1;j<=6;j++){
if(pre==cells[j+1]){
pre=cells[j];
cells[j]=1;
}else{
pre=cells[j];
cells[j]=0;
}
}
}
return cells;
}
}