题目
题目描述
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 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]
提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 10
-100 <= matrix[i][j] <= 100
题解
解题思路
要以顺时针螺旋顺序遍历一个矩阵,我们可以使用一个循环来逐步剥去矩阵的外层,并在每一轮迭代中按顺序添加元素到结果列表。具体来说,我们可以在每一圈按照以下顺序处理:
- 从左到右遍历当前顶层行。
- 从上到下遍历当前右侧列(如果还剩下未访问的行)。
- 从右到左遍历当前底层行(如果还剩下未访问的列)。
- 从下到上遍历当前左侧列(如果还剩下未访问的行)。
随着每一圈的完成,更新边界条件,直到所有的元素都被访问过。
python实现
def spiralOrder(matrix):
if not matrix or not matrix[0