输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 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