classSolution{public:voidgameOfLife(vector<vector<int>>&board){constintm=board.size();constintn=board[0].size();for(inti=0;i<m;++i)for(intj=0;j<n;++j){intones=0;for(intx=max(0,i-1);x<min(m,i+2);++x)for(inty=max(0,j-1);y<min(n,j+2);++y)ones+=board[x][y]&1;// Any live cell with 2 or 3 live neighbors// lives on to the next generationif(board[i][j]==1&&(ones==3||ones==4))board[i][j]|=0b10;// Any dead cell with exactly 3 live neighbors// becomes a live cell, as if by reproductionif(board[i][j]==0&&ones==3)board[i][j]|=0b10;}for(inti=0;i<m;++i)for(intj=0;j<n;++j)board[i][j]>>=1;}};
classSolution{publicvoidgameOfLife(int[][]board){finalintm=board.length;finalintn=board[0].length;for(inti=0;i<m;++i)for(intj=0;j<n;++j){intones=0;for(intx=Math.max(0,i-1);x<Math.min(m,i+2);++x)for(inty=Math.max(0,j-1);y<Math.min(n,j+2);++y)ones+=board[x][y]&1;// Any live cell with 2 or 3 live neighbors// lives on to the next generationif(board[i][j]==1&&(ones==3||ones==4))board[i][j]|=0b10;// Any dead cell with exactly 3 live neighbors// becomes a live cell, as if by reproductionif(board[i][j]==0&&ones==3)board[i][j]|=0b10;}for(inti=0;i<m;++i)for(intj=0;j<n;++j)board[i][j]>>=1;}}
classSolution:defgameOfLife(self,board:List[List[int]])->None:m=len(board)n=len(board[0])foriinrange(m):forjinrange(n):ones=0forxinrange(max(0,i-1),min(m,i+2)):foryinrange(max(0,j-1),min(n,j+2)):ones+=board[x][y]&1# Any live cell with 2 or 3 live neighbors# lives on to the next generationifboard[i][j]==1and(ones==3orones==4):board[i][j]|=0b10# Any dead cell with exactly 3 live neighbors# becomes a live cell, as if by reproductionifboard[i][j]==0andones==3:board[i][j]|=0b10foriinrange(m):forjinrange(n):board[i][j]>>=1