289. 生命游戏
题目:



题解:
java
class Solution {
public void gameOfLife(int[][] board) {
// 计算长和宽
int x_len = board.length;
int y_len = board[0].length;
//标记要变化的位置
boolean[][] flag=new boolean[x_len][y_len];
for(int i=0;i<x_len;i++) {
for(int j=0;j<y_len;j++) {
//周围活细胞的数量
int sum=0;
for(int x=-1;x<=1;x++) {
for(int y=-1;y<=1;y++) {
if(x==0&&y==0) {
continue;
}
int xx=i+x;
int yy=j+y;
//如果没有超出边界,那么进行统计当前活细胞的数量
if(xx<x_len&&yy<y_len&&xx>=0&&yy>=0) {
sum+=board[xx][yy];
}
}
}
if(board[i][j]==1) {
if(sum<2) {
flag[i][j]=true;
}
else if(sum>3) {
flag[i][j]=true;
}
}
else {
if(sum==3) {
flag[i][j]=true;;
}
}
}
}
for(int i=0;i<x_len;i++) {
for(int j=0;j<y_len;j++) {
if(flag[i][j]==true) {
board[i][j]=1-board[i][j];
}
}
}
}
}