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, 2, 3、右側を下って 4, 5, 6、下辺に沿って戻りながら 7, 8、左側を上って 9, 10 と読みます。内側の層は1列だけで、上から下へ1回だけ読みます:11, 12。

lock icon提出時に隠しテスト+15件

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]