设立一个directions数组,存储方向,然后在满足条件的时候,转换方向,请注意当row或col到达边界的时候,或者当前遍历值已经“输出”过的时候,则转换方向。
# -*- coding:utf-8 -*-
class Solution:
# matrix类型为二维列表,需要返回列表
def printMatrix(self, matrix):
# write code here
directions=[(0,1),(1,0),(0,-1),(-1,0)]
row= len(matrix)
col=len(matrix[0])
result=[0]*(row*col)
count=0
r=c=0
index=0
dx=dy=0
if row*col==0:
return []
while count <=row*col-1:
result[count]=matrix[r][c]
matrix[r][c]=-1
count+=1
dx=directions[index][0]
dy=directions[index][1]
if r+dx==row or c+dy==col or matrix[r+dx][c+dy]==-1:
index=(index+1)%4
dx=directions[index][0]
dy=directions[index][1]
r+=dx
c+=dy
return result

京公网安备 11010502036488号