与书上想法不一样的是,对已访问过的数字进行标记。
卡住的地方在于第一个数字,先加入还是先++
30min
class Solution:
# matrix类型为二维列表,需要返回列表
def printMatrix(self, matrix):
# write code here
res=[]
cnt=0
if matrix and matrix[0]:
row = len(matrix)
column = len(matrix[0])
num=row*column
res.append(matrix[0][0])
cnt+=1
matrix[0][0]=None
x,y=0,0
while(cnt<num):
while(y+1<column and matrix[x][y+1]!=None):
y+=1
res.append(matrix[x][y])
matrix[x][y]=None
cnt+=1
while(x+1<row and matrix[x+1][y]!=None):
x+=1
res.append(matrix[x][y])
matrix[x][y]=None
cnt+=1
while(y-1>=0 and matrix[x][y-1]!=None):
y-=1
res.append(matrix[x][y])
matrix[x][y]=None
cnt+=1
while(x-1>=0 and matrix[x-1][y]!=None):
x-=1
res.append(matrix[x][y])
matrix[x][y]=None
cnt+=1
return res
网友评论