leetcode_game_of_life 发表于 2016-12-11 难度:Medium 这里 状态机转换: 0:死为死 1:活为活 2:活变死 3:死变活 然后遍历每个点。 123456789101112131415161718192021222324252627282930313233class Solution {public: void gameOfLife(vector<vector<int>>& board) { int m = board.size(), n = board[0].size(); int dx[] = {-1,-1,-1,0,0,1,1,1}; int dy[] = {-1,0,1,-1,1,-1,0,1}; for(int i = 0; i < board.size(); i++) { for(int j = 0; j < board[0].size(); j++) { int cnt = 0; for(int k = 0; k < 8; k++) { if(i+dx[k] >= 0 && i+dx[k] < m && j + dy[k] >= 0 && j+dy[k] < n && (board[i+dx[k]][j+dy[k]] == 1 ||board[i+dx[k]][j+dy[k]] == 2)) cnt++; } if(board[i][j] && (cnt < 2 || cnt >3)) board[i][j] = 2; else if(!board[i][j] && cnt == 3) board[i][j] = 3; } } for(int i = 0; i < board.size(); i++) { for(int j = 0; j < board[0].size(); j++) { board[i][j] = board[i][j] % 2; } } }};