总结:
像这种二维数组的遍历题目
有一个很重要的技巧,就是
linju=[(-1,0),(-1,+1),(-1,-1),(0,-1),(0,+1),(+1,-1),(+1,0),(+1,+1)]
将遍历会触及到的下标用一个个元组保存下来
linju=[(-1,0),(-1,+1),(-1,-1),(0,-1),(0,+1),(+1,-1),(+1,0),(+1,+1)] #技巧
hang=len(board)
lie=len(board[0])
nums = [[board[row][col] for col in range(lie)] for row in range(hang)]
for i in range(hang):
for j in range(lie):
huoxibao=0
for l in linju:#当前元素的上下左右
x=i+l[0]
y=j+l[1]
if x>=0 and y>=0 and x<hang and y<lie and nums[x][y]==1:
huoxibao+=1
if nums[i][j]==1:
if huoxibao!=2 and huoxibao!=3:
board[i][j]=0
else:
if huoxibao==3:
board[i][j]=1
测试一下python中的copy方法
def ceshi():
list1=[1,2,3,4]
list2=list1.copy()
print(id(list1),id(list2)) #id不一样,所以是两个不一样的数组
list3=[[1,2,3],[2,3,4]]
list4=list3.copy()
print(id(list3),id(list4)) #id不一样,所以是两个不一样的数组
print(id(list4[0]),id(list3[0])) #id相同
#所以很明显,copy的复制,为了节省开销,他只是简单的创建一个数组,然后遍历一遍
ceshi()