目录
题目:
代码:
class Solution:
def gameOfLife(self, board: List[List[int]]) -> None:
"""
Do not return anything, modify board in-place instead.
"""
m=len(board)
n=len(board[0])
#矩阵拷贝
ret=[row[:] for row in board]
#函数要放前面
def tonum(i,j):
num=0
if 0<=i-1<m and 0<=j-1<n and board[i-1][j-1]==1:
num+=1
if 0<=i-1<m and 0<=j<n and board[i-1][j]==1:
num+=1
if 0<=i-1<m and 0<=j+1<n and board[i-1][j+1]==1:
num+=1
if 0<=i<m and 0<=j-1<n and board[i][j-1]==1:
num+=1
if 0<=i<m and 0<=j+1<n and board[i][j+1]==1:
num+=1
if 0<=i+1<m and 0<=j-1<n and board[i+1][j-1]==1:
num+=1
if 0<=i+1<m and 0<=j<n and board[i+1][j]==1:
num+=1
if 0<=i+1<m and 0<=j+1<n and board[i+1][j+1]==1:
num+=1
return num
for i in range(m):
for j in range(n):
num=0
if board[i][j]==0 and tonum(i,j)==3:
ret[i][j]=1
elif board[i][j]==1 and (tonum(i,j)<2 or tonum(i,j)>3):
ret[i][j]=0
for i in range(m):
for j in range(n):
board[i][j]=ret[i][j]
结果:
总结:
矩阵拷贝
#矩阵拷贝
ret=[row[:] for row in board]
我靠,这俩拷贝方式还不一样
就是说题目要求原地修改board,最后赋值回board的时候
不能用
board=[row[:] for row in ret]
只能用
for i in range(m):
for j in range(n):
board[i][j]=ret[i][j]
666666666666666666666666666666666666666666666666666666666666666666666666666