Menu
CoddyTech

Longest Increasing Path in a Matrix

m 行 n 列の整数のグリッドである matrix が、行のリストとして与えられます。パスは、上下左右のいずれかに一歩ずつ移動してセルからセルへ進みます(斜めへの移動や、端を越えて反対側に回り込む移動はできません)。また、各移動先の値は、移動元の値より厳密に大きくなければなりません。このようなパスのうち、最長のものに含まれるセルの数を返してください。セル1つだけでも、長さ1のパスです。

関数

longestIncreasingPath(matrix: integer-2d-array) → integer
matrixinteger-2d-array
同じ長さの行のリストとしての値のグリッド
戻り値integer
最長の狭義単調増加経路上のセル数

制約

  • 1 ≤ m, n ≤ 100。ここで、m = matrix.length、n = matrix[i].length
  • すべての行の長さは同じ n です。
  • 0 ≤ matrix[i][j] ≤ 231-1

例

入力
matrix = [[9, 8, 3], [2, 7, 4], [1, 6, 5]]
出力
7
説明
経路 3, 4, 5, 6, 7, 8, 9 は右端の列を下り、最下段を左に進み、中央の列を上り、角の 9 まで左に進みます。7 マスです。最小値はこれより悪くなります。1 からの最良の経路は 1, 2, 7, 8, 9 と 1, 6, 7, 8, 9 で、それぞれ 5 マスです。

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

challenge icon

発展問題

最長経路の長さだけでなく、最長経路のうち1つを構成するセルも返せますか?

コードをリセット
def longestIncreasingPath(matrix):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

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

期待値

7