思路1 用第二位存储下一阶段的状态
如果复制一个board来计算新状态,空间复杂度是O(mn)。而这种思路是常数空间复杂度。时间复杂度都是O(mn)
细胞的两种状态01只用到了第一位。注意count的数量不但包括周围八个,也包括了board[i][j]本身
首先明确可以或的情况,简化一下就是:
周围有三个,则不论ij生死,新阶段都可以活
周围有两个,则ij生,新阶段也可以活
``
上面的判断里,
(board[i][j] == 0 && count == 3) || (board[i][j] == 1 && count == 3 || count == 4)
上面的判断可以优化为
(count == 3 || (count == 4 && board[i][j] == 1))
如果ij当前是0,则必有count=3,周围有三个,所以新阶段可以活
如果ij当前是1
count=3,周围有两个,新阶段活
count=4,周围有三个,新阶段活
Last updated