難度中等
408給定乙個包含m × n
個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞都具有乙個初始狀態:1
即為 活細胞 (live),或0
即為 死細胞 (dead)。每個細胞與其八個相鄰位置(水平,垂直,對角線)的細胞都遵循以下四條生存定律:
如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡;
如果活細胞周圍八個位置有兩個或三個活細胞,則該位置活細胞仍然存活;
如果活細胞周圍八個位置有超過三個活細胞,則該位置活細胞死亡;
如果死細胞周圍正好有三個活細胞,則該位置死細胞復活;
下乙個狀態是通過將上述規則同時應用於當前狀態下的每個細胞所形成的,其中細胞的出生和死亡是同時發生的。給你m x n
網格面板board
的當前狀態,返回下乙個狀態。
示例 1:
輸入:board = [[0,1,0],[0,0,1],[1,1,1],[0,0,0]]示例 2:輸出:[[0,0,0],[1,0,1],[0,1,1],[0,1,0]]
輸入:board = [[1,1],[1,0]]輸出:[[1,1],[1,1]]
int rowstep[8] = ;int rowstep[8] = ;int colstep[8] = ;int colstep[8] = ;
// 如需使用華為安全函式,**上 #include "securec.h"
int countnearcell(int **board, int r, int rsize, int c, int csize)
if(board[r + rowstep[i]][c + colstep[i]] == 1)
} return cnt;
}//如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡;
//如果活細胞周圍八個位置有兩個或三個活細胞,則該位置活細胞仍然存活;
//如果活細胞周圍八個位置有超過三個活細胞,則該位置活細胞死亡;
//如果死細胞周圍正好有三個活細胞,則該位置死細胞復活;
void gameoflife(int** board, int boardsize, int* boardcolsize) else if(cellnum == 2) else if(cellnum == 3) else if(cellnum > 3)
} }memcpy(board, res, sizeof(int *) * boardsize);
return ;
}
// 如需使用華為安全函式,**上 #include "securec.h"int countnearcell(int **board, int r, int rsize, int c, int csize) if(board[r + rowstep[i]][c + colstep[i]] == 1) }return cnt;}
//如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡;//如果活細胞周圍八個位置有兩個或三個活細胞,則該位置活細胞仍然存活;//如果活細胞周圍八個位置有超過三個活細胞,則該位置活細胞死亡;//如果死細胞周圍正好有三個活細胞,則該位置死細胞復活;
void gameoflife(int** board, int boardsize, int* boardcolsize) else if(cellnum == 2) else if(cellnum == 3) else if(cellnum > 3) }}memcpy(board, res, sizeof(int *) * boardsize);return ;}
leetcode 289 生命遊戲
給定乙個包含 m n 個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞具有乙個初始狀態 live 1 即為活細胞,或 dead 0 即為死細胞。每個細胞與其八個相鄰位置 水平,垂直,對角線 的細胞都遵循以下四條生存定律 如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡 如果活細胞周...
Leetcode 289 生命遊戲
給定乙個包含 m n 個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞具有乙個初始狀態 live 1 即為活細胞,或 dead 0 即為死細胞。每個細胞與其八個相鄰位置 水平,垂直,對角線 的細胞都遵循以下四條生存定律 如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡 如果活細胞周...
LeetCode 289 生命遊戲
給定乙個包含 m n 個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞具有乙個初始狀態 live 1 即為活細胞,或 dead 0 即為死細胞。每個細胞與其八個相鄰位置 水平,垂直,對角線 的細胞都遵循以下四條生存定律 根據當前狀態,寫乙個函式來計算面板上細胞的下乙個 一次更新後的 狀態。下乙...