Menu
CoddyTech

Spiral Matrix

你会得到一个整数矩阵,它有 m 行和 n 列,以行列表的形式给出。按螺旋顺序返回矩阵中的所有值。

从左上角开始,沿着第一行向右移动,然后沿着最右侧一列向下移动,接着沿着最后一行向左移动,再沿着最左侧一列向上移动。继续顺时针向内一圈圈移动,直到每个值都恰好读取一次。

函数

spiralOrder(matrix: integer-2d-array) → integer-array
matrixinteger-2d-array
整数网格,表示为一个长度相同的行列表
返回值integer-array
从左上角开始,按顺时针螺旋顺序遍历矩阵中的每个值

约束条件

  • 1 ≤ m, n ≤ 80,其中 m = matrix.length,n = matrix[i].length
  • 每一行的长度都相同,为 n。
  • -100 ≤ matrix[i][j] ≤ 100

示例

输入
matrix = [[1, 2, 3], [10, 11, 4], [9, 12, 5], [8, 7, 6]]
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
解释
数值沿着螺旋递增。外圈的数值从 1 到 10,内层是一列,只读一次:11, 12。
challenge icon

进阶

你能改为按逆时针顺序返回这些值吗?从左上角开始,先沿左侧一列向下。

重置代码
def spiralOrder(matrix):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

matrix = [[1, 2, 3], [10, 11, 4], [9, 12, 5], [8, 7, 6]]

预期输出

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]