题目链接:
https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/
题意:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
题解:
模拟题目,注意控制条件即可。到边界时转向,遇到已经输出的元素也转向。
代码:
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
ret = []
if len(matrix)==0 or len(matrix[0])==0:
return ret
x,y,u,d,l,r,cnt,op=0,0,0,len(matrix)-1,0,len(matrix[0])-1,0,0
while cnt<len(matrix)*len(matrix[0]):
ret.append(matrix[x][y])
cnt+=1
if op == 0:#right
if y== r:
u+=1
op = 1
x+=1
else :
y+=1
elif op == 1:#down
if x==d:
r-=1
op = 2
y-=1
else :
x+=1
elif op == 2:#left
if y==l:
d -=1
op =3
x-=1
else:
y-=1
else :#up
if x == u:
l+=1
op =0
y+=1
else:
x-=1
return ret