变量简洁正确完整思路 如果是1,123规则,如果是0,4规则,赋值tmp,遍历原数组每个元素,if1if0,用tmp 判断8个方向,dxdy,cnt计算八个方向活细胞 class Solution { public: void gameOfLife(vector<vector<int>>& board) { vector<vector<int>>tmp(board); int n=board.size(),m=board[0].size(); int xx[]={-1,-1,-1,0,0,1,1,1}; int yy[]={-1,0,1,-1,1,-1,0,1}; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ int cnt=0; for(int k=0;k<8;k++){ int dx=xx[k]+i,dy=yy[k]+j; if(dx>=0&&dx<n&&dy>=0&&dy<m&&tmp[dx][dy]==1)cnt++; } if(board[i][j]==1){ if(cnt<2||cnt>3)board[i][j]=0; }else { if(cnt==3)board[i][j]=1; } } } } }; 变量简洁正确完整思路 如果是1,123规则变成0则写作2,如果是0变成1写作3,统计的时候注意23 恢复23 class Solution { public: void gameOfLife(vector<vector<int>>& board) { int n=board.size(),m=board[0].size(); int xx[]={-1,-1,-1,0,0,1,1,1}; int yy[]={-1,0,1,-1,1,-1,0,1}; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ int cnt=0; for(int k=0;k<8;k++){ int dx=xx[k]+i,dy=yy[k]+j; if(dx>=0&&dx<n&&dy>=0&&dy<m&&(board[dx][dy]==1||board[dx][dy]==2))cnt++; } if(board[i][j]==1){ if(cnt<2||cnt>3)board[i][j]=2; }else { if(cnt==3)board[i][j]=3; } } } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(board[i][j]==2)board[i][j]=0; if(board[i][j]==3)board[i][j]=1; } } } };