1
class Solution {
2
public int[] prisonAfterNDays(int[] cells, int N) {
3
if (N == 0) return cells;
4
int[][] mem = new int[14][8]; // Repeat pattern after day 14, so Day 1 and Day 15 is equal
5
mem[0][0] = 0;
6
mem[0][7] = 0;
7
for (int i = 1; i < 7; i++) { // calculating Day 1 and insert at 0th position in mem
8
if (cells[i - 1] == cells[i + 1]) mem[0][i] = 1;
9
else mem[0][i] = 0;
10
}
11

12
for (int j = 1;
13
j < 14;
14
j++) { // calculating Day 2 to 14 and inserting at position 1 to 13 in mem.
15
for (int i = 1; i < 7; i++) {
16
if (mem[j - 1][i - 1] == mem[j - 1][i + 1]) mem[j][i] = 1;
17
else mem[j][i] = 0;
18
}
19
}
20
return mem[(N - 1) % 14]; // return the day modulo 14
21
}
22
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0