题解
不给额外空间该怎么做呢?那就往原来空间里挤一挤。
显然,原来矩阵只存储了0-1,用了1位而已,把变化的信息存入第二位就好了。
Code
void gameOfLife(vector<vector<int>>& board) {
if(board.empty()) return;
int n=board.size(),m=board[0].size();
int live;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
live=0;
for(int k=max(i-1,0);k<=min(i+1,n-1);k++){
for(int t=max(j-1,0);t<=min(j+1,m-1);t++){
if(k==i&&t==j) continue;
live+=board[k][t]&1;// 1 bit pos
}
}
if(live==3 || (live==2 && board[i][j]==1))
board[i][j] |= 2;// 2 bit pos
}
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
board[i][j]>>=1;
}