leetcode-289

主要的问题是我们需要用上一个状态来判断当前状态。因为可能因为你变1之后影响其他的。

 

Perhaps that’s been the story of life

 

func gameOfLife(board [][]int) {
    temp := make([][]int, len(board))
    for i := 0; i < len(board); i++ {
        temp[i] = make([]int, len(board[i]))
    }
    for i := 0; i < len(board); i++ {
        for j := 0; j < len(board[0]); j++ {
            nums := 0
            // 上面
            if i - 1 >= 0 {
                nums += board[i-1][j]
            }
            // 左面
            if j - 1 >= 0 {
                nums += board[i][j-1]
            }
            // 下面
            if i + 1 < len(board) {
                nums += board[i+1][j]
            }
            // 右面
            if j + 1 < len(board[i]) {
                nums += board[i][j+1]
            }
            // 左上
            if i - 1 >= 0 && j - 1 >= 0 {
                nums += board[i-1][j-1]
            }
            // 右上
            if i - 1 >= 0 && j + 1 < len(board[i]) {
                nums += board[i-1][j+1]
            }
            // 左下
            if i + 1 < len(board) && j - 1 >= 0  {
                nums += board[i+1][j-1]
            }
            // 右下
            if j + 1 < len(board[i]) && i + 1 < len(board) {
                nums += board[i+1][j+1]
            }
            temp[i][j] = board[i][j]
            switch {
            case nums < 2:
                temp[i][j] = 0
            case nums == 3 && temp[i][j] == 0:
                temp[i][j] = 1
            case nums > 3:
                temp[i][j] = 0
            }
        }
    }
    copy(board, temp)
}

 

end

posted @ 2020-04-02 23:57  zhangyu63  阅读(117)  评论(0编辑  收藏  举报