Menu
CoddyTech

Longest Increasing Path in a Matrix

Otrzymujesz matrix, siatkę liczb całkowitych z m wierszami i n kolumnami, w postaci listy wierszy. Ścieżka prowadzi z jednej komórki do drugiej, za każdym razem o jeden krok w górę, w dół, w lewo lub w prawo (bez ruchów po przekątnej i bez przechodzenia na przeciwległą krawędź), a każdy krok musi prowadzić do komórki o ściśle większej wartości. Zwróć liczbę komórek na najdłuższej takiej ścieżce. Pojedyncza komórka sama w sobie tworzy ścieżkę o długości 1 komórki.

Funkcja

longestIncreasingPath(matrix: integer-2d-array) → integer
matrixinteger-2d-array
siatka wartości w postaci listy wierszy o jednakowej długości
Zwracainteger
liczba komórek na najdłuższej ściśle rosnącej ścieżce

Ograniczenia

  • 1 ≤ m, n ≤ 100, gdzie m = matrix.length i n = matrix[i].length
  • Każdy wiersz ma tę samą długość n.
  • 0 ≤ matrix[i][j] ≤ 231-1

Przykłady

Wejście
matrix = [[9, 8, 3], [2, 7, 4], [1, 6, 5]]
Wyjście
7
Wyjaśnienie
Ścieżka 3, 4, 5, 6, 7, 8, 9 biegnie w dół prawą kolumną, w lewo dolnym wierszem, w górę środkową kolumną i w lewo do 9 w rogu: 7 komórek. Najmniejsza wartość wypada gorzej: od 1 najlepsze ścieżki to 1, 2, 7, 8, 9 oraz 1, 6, 7, 8, 9, każda po 5 komórek.

lock icon+18 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Czy możesz również zwrócić komórki jednej z najdłuższych ścieżek, a nie tylko jej długość?

Zresetuj kod
def longestIncreasingPath(matrix):
    # Wpisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

7