模拟,简单题
class Solution {
public:
void gameOfLife(vector<vector<int>>& board) {
vector<vector<int>> vec = board;
int m = vec.size();
int n = vec[0].size();
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
int num = numOne(vec,i,j,m,n);
if(vec[i][j] == 0){
if(num == 3) board[i][j] = 1;
}else{
if(num < 2 || num > 3) board[i][j] = 0;
}
}
}
}
int numOne(const vector<vector<int>>& vec, int i, int j, int m, int n){
//没有对m,n进行不合法判断,由题目决定的,输入肯定合规
int sum = 0;
if(i - 1 >= 0){
sum += vec[i - 1][j];
if(j - 1 >= 0) sum += vec[i - 1][j - 1];
if(j + 1 < n) sum += vec[i - 1][j + 1];
}
if(i + 1 < m){
sum += vec[i + 1][j];
if(j - 1 >= 0) sum += vec[i + 1][j - 1];
if(j + 1 < n) sum += vec[i + 1][j + 1];
}
if(j - 1 >= 0) sum += vec[i][j - 1];
if(j + 1 < n) sum += vec[i][j + 1];
return sum;
}
};