题目来源:链接
题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
代码实现:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
if not matrix:return []
l,r,t,b = 0,len(matrix[0])-1,0,len(matrix)-1
res = []
while True:
for i in range(l,r+1):
res.append(matrix[t][i])
t += 1
if t>b:break
for i in range(t,b+1):
res.append(matrix[i][r])
r -= 1
if l>r:break
for i in range(r,l-1,-1):
res.append(matrix[b][i])
b -= 1
if t>b:break
for i in range(b,t-1,-1):
res.append(matrix[i][l])
l += 1
if l>r:break
return res
解题思路:
确定矩阵的4个边界,模拟运行就行,因为打印的是顺时针的,从外到内
所以代码虽然长,但是逻辑比较好理解