> For the complete documentation index, see [llms.txt](https://851958789.gitbook.io/notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://851958789.gitbook.io/notes/0289_game_of_life/slt.md).

# 思路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，周围有三个，新阶段活
