every blog every motto: You will never know unless you try
0. 前言
生活好难,再坚持坚持!
1. 正文
1.2 题解
class Solution:
def gameOfLife(self, board: List[List[int]]) -> None:
"""
Do not return anything, modify board in-place instead.
"""
rows = len(board)
cols = len(board[0])
# 复制的数组
new_board = [[board[row][col] for col in range(cols)] for row in range(rows)]
# 周围数组的增量
neigbor_add = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]
# 遍历数组中的每个点
for row in range(rows):
for col in range(cols):
live_neighbors = 0 # 周围存活的细胞
# 遍历周围8个细胞
for neighbor in neigbor_add:
r = (row + neighbor[0]) # 行变化
c = (col + neighbor[1]) # 列变化
# 查看相邻细胞是否存活
if (r < rows and r >= 0) and (c < cols and c >= 0) and (new_board[r][c] == 1):
live_neighbors += 1 # 周围细胞存活数+1
# 根据规则进行判断
# 规则1 3
if new_board[row][col] == 1 and (live_neighbors < 2 or live_neighbors > 3):
board[row][col] = 0
# 规则 4
if new_board[row][col] == 0 and live_neighbors == 3:
board[row][col] = 1