leetCode 289 生命遊戲

2021-10-23 02:07:54 字數 1219 閱讀 7149

給定乙個包含 m × n 個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞都具有乙個初始狀態:1 即為活細胞(live),或 0 即為死細胞(dead)。每個細胞與其八個相鄰位置(水平,垂直,對角線)的細胞都遵循以下四條生存定律:

如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡;

如果活細胞周圍八個位置有兩個或三個活細胞,則該位置活細胞仍然存活;

如果活細胞周圍八個位置有超過三個活細胞,則該位置活細胞死亡;

如果死細胞周圍正好有三個活細胞,則該位置死細胞復活;

根據當前狀態,寫乙個函式來計算面板上所有細胞的下乙個(一次更新後的)狀態。下乙個狀態是通過將上述規則同時應用於當前狀態下的每個細胞所形成的,其中細胞的出生和死亡是同時發生的。

輸入: 

[[0,1,0],

[0,0,1],

[1,1,1],

[0,0,0]

]輸出:

[[0,0,0],

[1,0,1],

[0,1,1],

[0,1,0]

]

因為面板上所有格仔需要同時被更新:不能先更新某些格仔,然後使用它們的更新後的值再更新其他格仔

所以先用乙個陣列複製原始陣列,然後更新規則基於該陣列即可

class solution ;

int dy = ;

public void gameoflife(int board)

//生存定律4

if(copy[i][j] == 0 && count == 3)}}

}//統計當前細胞八個位置的活細胞數

public int countlife(int copy,int x,int y,int rows,int cols);

int dy = ;

public void gameoflife(int board)

//生存定律4

if(board[i][j] == 0 && count == 3)}}

//遍歷得到更新狀態

for(int i=0;i0?1:0;}}

}//統計當前細胞八個位置的活細胞數

public int countlife(int board,int x,int y,int rows,int cols)

}return count;

}}

leetcode 289 生命遊戲

給定乙個包含 m n 個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞具有乙個初始狀態 live 1 即為活細胞,或 dead 0 即為死細胞。每個細胞與其八個相鄰位置 水平,垂直,對角線 的細胞都遵循以下四條生存定律 如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡 如果活細胞周...

Leetcode 289 生命遊戲

給定乙個包含 m n 個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞具有乙個初始狀態 live 1 即為活細胞,或 dead 0 即為死細胞。每個細胞與其八個相鄰位置 水平,垂直,對角線 的細胞都遵循以下四條生存定律 如果活細胞周圍八個位置的活細胞數少於兩個,則該位置活細胞死亡 如果活細胞周...

LeetCode 289 生命遊戲

給定乙個包含 m n 個格仔的面板,每乙個格仔都可以看成是乙個細胞。每個細胞具有乙個初始狀態 live 1 即為活細胞,或 dead 0 即為死細胞。每個細胞與其八個相鄰位置 水平,垂直,對角線 的細胞都遵循以下四條生存定律 根據當前狀態,寫乙個函式來計算面板上細胞的下乙個 一次更新後的 狀態。下乙...