'''
解题思路:
先做4个子函数fun1-4,再做一个主调fun,运行一次剥离一圈数据,直到矩阵为空
'''
def fun1(matrix):
if matrix:
return matrix.pop(0),matrix
else:
return [],[]
def fun2(matrix):
if matrix:
t = []
mat = []
for row in matrix:
if row:
a = row.pop()
t.append(a)
mat.append(row)
return t,mat
else:
return [],[]
def fun3(matrix):
if matrix:
return matrix.pop()[::-1],matrix
else:
return [],[]
def fun4(matrix):
if matrix:
t = []
mat = []
for row in matrix[::-1]:
if row:
a = row.pop(0)
t.append(a)
mat.append(row)
return t,mat[::-1]
else:
return [],[]
def fun(matrix):
if matrix:
out1,matrix = fun1(matrix)
out2,matrix = fun2(matrix)
out3,matrix = fun3(matrix)
out4,matrix = fun4(matrix)
return out1+out2+out3+out4,matrix
else:
return [],[]
# @param matrix int整型二维数组
# @return int整型一维数组
#
class Solution:
def spiralOrder(self , matrix ):
# write code here
res = []
while matrix:
out,matrix = fun(matrix)
res += out
#print(res)
return res
#print(Solution().spiralOrder([[1,2,3],[4,5,6],[7,8,9]]))