Menu
CoddyTech

Longest Increasing Path in a Matrix

Тебе дана matrix — сетка целых чисел с m строками и n столбцами, представленная в виде списка строк. Путь проходит от одной ячейки к другой, каждый раз на один шаг вверх, вниз, влево или вправо (диагональные шаги и выход за границы не допускаются), и каждый шаг должен вести к строго большему значению. Верни количество ячеек в самом длинном таком пути. Одна ячейка сама по себе образует путь из 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

Дополнительный вопрос

Можешь также вернуть ячейки одного из самых длинных путей, а не только его длину?

Сбросить код
def longestIncreasingPath(matrix):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

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

Ожидается

7