题目链接:leetcode.cn/problems/ga…
题解
func gameOfLife(board [][]int) {
for i := 0; i < len(board); i++ {
for j := 0; j < len(board[0]); j++ {
s := status(i, j, board)
if board[i][j] < s {
board[i][j] = -1
}
if board[i][j] > s {
board[i][j] = 2
}
}
}
for i := 0; i < len(board); i++ {
for j := 0; j < len(board[0]); j++ {
if board[i][j] == -1 {
board[i][j] = 1
}
if board[i][j] == 2 {
board[i][j] = 0
}
}
}
}
func status(i, j int, board [][]int) int {
var lives = oldStatus(board, i-1, j-1) +
oldStatus(board, i-1, j) +
oldStatus(board, i-1, j+1) +
oldStatus(board, i, j-1) +
oldStatus(board, i, j+1) +
oldStatus(board, i+1, j-1) +
oldStatus(board, i+1, j) +
oldStatus(board, i+1, j+1)
if board[i][j] == 0 {
if lives == 3 {
return 1
} else {
return 0
}
} else {
if lives < 2 || lives > 3 {
return 0
} else {
return 1
}
}
}
func oldStatus(board [][]int, i, j int) int {
if i < 0 || i >= len(board) {
return 0
}
if j < 0 || j >= len(board[0]) {
return 0
}
if board[i][j] == -1 {
return 0
}
if board[i][j] == 2 {
return 1
}
return board[i][j]
}
要点
- 这道题应该是 Easy 的难度。注意题目中的同步更新的要求即可。