289. 生命游戏

289. 生命游戏


题目链接:289. 生命游戏

代码如下:

class Solution {
public:
    void gameOfLife(vector<vector<int>>& board) {
        //设置方向来遍历某个节点周围的另外几个节点
        int neighbors[3]{-1,0,1};
        for(int row=0;row<board.size();row++)
        {
            for(int clo=0;clo<board[0].size();clo++)
            {
                int liveCell=0;//记录周围的存活细胞数量
                for(int i=0;i<3;i++)//两个fou循环遍历他的周围除它自身以外的8个细胞
                {
                    for(int j=0;j<3;j++)
                    {
                        //访问的是自己,,就跳过
                        if(neighbors[i]==0&&neighbors[j]==0)
                            continue;
                        int r=row+neighbors[i];
                        int c=clo+neighbors[j];
                        if((r>=0&&r<board.size()) && (c>=0&&c<board[0].size()) && (abs(board[r][c])==1))
                        liveCell++;
                    }
                }
                if(board[row][clo]==1&&(liveCell>3||liveCell<2))
                    board[row][clo]=-1;//-1代表细胞过去是活的,现在死了
                
                if(board[row][clo]==0&&liveCell==3)
                    board[row][clo]=2;//2代表细胞过去是死的,现在是活得
            }
        }
        //把额外的状态修改回去
         for(int row=0;row<board.size();row++)
        {
            for(int clo=0;clo<board[0].size();clo++)
            {
                if(board[row][clo]==2)
                    board[row][clo]=1;
                if(board[row][clo]==-1)
                    board[row][clo]=0;
            }
        }
    }
};

你可能感兴趣的:(leetcode,c++)