解
根据题意 螺旋遍历
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
if matrix == []:
return list()
# 定义 上下左右 未遍历边界
up = 0
down = len(matrix) - 1
left = 0
right = len(matrix[0]) - 1
result = list()
# 螺旋遍历
while True:
# 从左往右
for j in range(left, right + 1):
result.append(matrix[up][j])
up += 1
if up > down:
break
# 从上往下
for i in range(up, down + 1):
result.append(matrix[i][right])
right -= 1
if right < left:
break
# 从右往左
for j in range(right, left - 1, -1):
result.append(matrix[down][j])
down -= 1
if down < up:
break
# 从下往上
for i in range(down, up - 1, -1):
result.append(matrix[i][left])
left += 1
if left > right:
break
return result