class Solution(object):
def spiralOrder(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: List[int]
"""
if matrix == []:
return []
a = 0
b = len(matrix[0])-1
c = 0
d = len(matrix)-1
ans = []
while(not check(a,b,c,d)):
for i in range(a, b+1):
ans.append(matrix[c][i])
c += 1
if check(a,b,c,d):
break
for i in range(c, d+1):
ans.append(matrix[i][b])
b -= 1
if check(a,b,c,d):
break
for i in range(b, a-1, -1):
ans.append(matrix[d][i])
d -= 1
if check(a,b,c,d):
break
for i in range(d, c-1, -1):
ans.append(matrix[i][a])
a += 1
return ans
def check(a, b, c, d):
if a > b or c > d:
return True
return False
矩阵 数组 细节