生命游戏(中等)
-
思路比较简单:复制一份原始数组;根据复制数组中邻居细胞的状态来更新
board
中的细胞状态。
class Solution {public void gameOfLife(int[][] board) {int[] neighbors={0,1,-1};int rows=board.length;int cols=board[0].length;int[][] copyboard=new int[rows][cols];for(int i=0;i<rows;i++){for(int j =0;j<cols;j++){copyboard[i][j]=board[i][j];}}for(int row=0;row<rows;row++){for(int col=0;col<cols;col++){int liveneighbors=0;for(int i=0;i<3;i++){for(int j=0;j<3;j++){if(!(neighbors[i]==0&&neighbors[j]==0)){int r=(row+neighbors[i]);int c=(col+neighbors[j]);if((r<rows&&r>=0)&&(c<cols&&c>=0)){if(copyboard[r][c]==1){liveneighbors=liveneighbors+1;}}}}}if((copyboard[row][col]==1)&&(liveneighbors<2||liveneighbors>3)){board[row][col]=0;}if((copyboard[row][col]==0)&&(liveneighbors==3)){board[row][col]=1;}}}}
}