输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,2,3,4,8,12,11,10,9,5,6,7]
来源:力扣(LeetCode)
思路:暴力循环模拟
class Solution:
def spiralOrder(self
, matrix
: List
[List
[int]]) -> List
[int]:
if len(matrix
)==0:
return []
f
= True
n
= len(matrix
[0])
m
= len(matrix
)
x1
= 0
x2
= len(matrix
)
y1
= 0
y2
= len(matrix
[0])
ans
= []
while f
:
for y
in range(y1
,y2
):
ans
.append
(matrix
[x1
][y
])
x1
+= 1
if x1
== x2
:
break
for x
in range(x1
,x2
):
ans
.append
(matrix
[x
][y2
-1])
y2
-= 1
if y1
==y2
:
break
for y
in range(y2
-1,y1
-1,-1):
ans
.append
(matrix
[x2
-1][y
])
x2
-= 1
if x1
== x2
:
break
for x
in range(x2
-1,x1
-1,-1):
ans
.append
(matrix
[x
][y1
])
y1
+=1
if y1
==y2
:
break
if x1
> n
/2 or y1
>m
/2:
f
= False
return ans