题目描述
题目解析
- 本题是用一个二维数组保存细胞,细胞的死活跟当前数组里的值有关。
- 如果按照正常做法去更新每一个而不使用辅助数组时,就无法满足题目要求,我们应该对数组进行同步更新。
- 我们应该保存两个状态,一个是更新前的状态,一个是更新后的状态。那么我们可以用十位数来保存更新后的状态,个位数保存更新前状态。
- 刚看到这道题第一想法应该是去遍历每个位置周围,存下1的数目来更新,但在评论区借鉴了某位大神的思路,我们可以遍历各个位置,而各个位置活着的细胞会辐射影响周围的位置,使得周围的位置都加上10。
- 而对于判断的问题,我们可以分出细胞存活的情况有两种,分别是更新前活着并且周围只有2或3个活细胞,即21和31的时候和更新前死去但周围刚好有3个活细胞而复活的情况,即30的时候。
题目解答
class Solution {
public void gameOfLife(int[][] board) {
int r=board.length;
int c=board[0].length;
for(int i=0;i<r;i++){
for(