class Solution { public: void gameOfLife(vector<vector<int>>& board) { if(board.empty()) return; int row = board.size(); int col = board[0].size(); for(int i=0; i<row; i++){ for(int j=0; j<col; j++){ int cell = board[i][j]; int liveCount=0; for(int p = i-1; p<=i+1; p++) for(int q=j-1; q<=j+1; q++){ if(p<0||p>=row||q<0||q>=col||(p==i&&q==j)) continue; liveCount = (board[p][q]&1)==1? liveCount+1:liveCount; } if(cell==1){ if(liveCount==2||liveCount==3) board[i][j]=3; }else if(liveCount==3) board[i][j]=2; } } for(int i=0; i<row; i++) for(int j=0; j<col; j++) board[i][j]=board[i][j]>>1; } };