54. Spiral Matrix Medium
Description
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
Example
- Example 1:
Input:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
Output: [1,2,3,6,9,8,7,4,5]
- Example 2:
Input:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
Output: [1,2,3,4,8,12,11,10,9,5,6,7]
题意
按顺时针方向的螺旋方式遍历输出二维数组上的各值。
解体思路
简单粗暴的方法,row,col分别代表行、列,按照题意从第一行开始向右移动,边移动边判断条件。
code
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
if matrix == []:
return []
m = len(matrix)-1
n = len(matrix[0])-1
row = col = 0
res = []
while row<=n and col<=m:
for i in range(col,n+1):
res.append(matrix[row][i])
row += 1
if row > m :
break
for i in range(row,m+1):
res.append(matrix[i][n])
n -= 1
i = n
if col > n:
break
while i >= col:
res.append(matrix[m][i])
i -= 1
m -= 1
i = m
if row > m:
break
while i >= row:
res.append(matrix[i][col])
i -= 1
col += 1
return res