生命周期
  这个官方文档的解法更好,更巧妙,而我的一方面另开了空间,同时我判断也比较复杂,不太支持用我的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
public void gameOfLife(int[][] board) {
int m = board.length;
int n = board[0].length;
int[][] flag = new int[m][n];
int r;
int c;
int count;
for(int i = 0;i<m;i++){
for(int j = 0; j < n; j++){
r = i-1;
c = j-1;
count = 0;
if(r>=0){
if(board[r][j]==1){
count++;
}
if(c>=0){
if(board[r][c]==1){
count++;
}
if(board[i][c]==1){
count++;
}
if(i+1<m){
if(board[i+1][c]==1){
count++;
}
if(board[i+1][j]==1){
count++;
}
}
}else{
if(i+1<m){
if(board[i+1][j]==1){
count++;
}
}
}
if(j+1<n){
if(board[r][j+1]==1){
count++;
}
if(board[i][j+1]==1){
count++;
}
if(i+1<m){
if(board[i+1][j+1]==1){
count++;
}
}
}
}else{
if(c>=0){
if(board[i][c]==1){
count++;
}
if(i+1<m){
if(board[i+1][c]==1){
count++;
}
if(board[i+1][j]==1){
count++;
}
}
}else{
if(i+1<m){
if(board[i+1][j]==1){
count++;
}
}
}
if(j+1<n){
if(board[i][j+1]==1){
count++;
}
if(i+1<m){
if(board[i+1][j+1]==1){
count++;
}
}
}
}
if(board[i][j]==1){
if(!(count==2||count==3)){
flag[i][j] = 1;
}
}else{
if(count==3){
flag[i][j] = 1;
}
}
}
}
for(int i = 0;i<m;i++){
for(int j = 0;j<n;j++){
if(flag[i][j]==1){
if(board[i][j] == 0){
board[i][j] = board[i][j]+1;
}else{
board[i][j] = board[i][j]-1;
}
// board[i][j] = board[i][j]^flag[i][j];
}
}
}
}