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 から始める場合、最適な経路のセル数は 5 です。
challenge icon

発展問題

最長経路のセルと、その長さも返すことはできますか?

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

テスト #1

テスト #2

テスト #3

引数

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

期待される出力

7