Menu
CoddyTech

Longest Increasing Path in a Matrix

Vous recevez matrix, une grille de nombres entiers comportant m lignes et n colonnes, sous forme d’une liste de lignes. Un chemin se déplace d’une cellule à une autre, d’un pas vers le haut, le bas, la gauche ou la droite à la fois (pas de déplacement en diagonale ni de passage d’un bord à l’autre), et chaque pas doit aboutir sur une valeur strictement supérieure. Renvoyez le nombre de cellules du plus long chemin de ce type. Une cellule seule constitue un chemin de 1 cellule.

Fonction

longestIncreasingPath(matrix: integer-2d-array) → integer
matrixinteger-2d-array
la grille de valeurs, sous forme d’une liste de lignes de longueur égale
Renvoieinteger
le nombre de cellules sur le plus long chemin strictement croissant

Contraintes

  • 1 ≤ m, n ≤ 100, où m = matrix.length et n = matrix[i].length
  • Chaque ligne a la même longueur n.
  • 0 ≤ matrix[i][j] ≤ 231-1

Exemples

Entrée
matrix = [[9, 8, 3], [2, 7, 4], [1, 6, 5]]
Sortie
7
Explication
Le chemin 3, 4, 5, 6, 7, 8, 9 descend dans la colonne de droite, va vers la gauche le long de la rangée du bas, remonte dans la colonne du milieu et va vers la gauche jusqu’au 9 dans le coin : 7 cases. La plus petite valeur donne un moins bon résultat : à partir du 1, les meilleurs chemins sont 1, 2, 7, 8, 9 et 1, 6, 7, 8, 9, avec 5 cases chacun.

lock icon+18 tests cachés à la soumission

challenge icon

Pour aller plus loin

Peux-tu également renvoyer les cellules d’un chemin le plus long, et pas seulement sa longueur ?

Réinitialiser le code
def longestIncreasingPath(matrix):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

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

Attendu

7