Menu
CoddyTech

Swim in Rising Water

Дана сетка высот размером n × n, содержащая каждое число от 0 до n²-1 ровно один раз, в виде списка строк. Дождь начинается в момент времени 0, и в момент времени t уровень воды везде равен t, поэтому каждая клетка высотой не более t находится под водой. Вы начинаете в верхней левой клетке. Вы можете переплыть из клетки в соседнюю по стороне, если обе находятся под водой; плавание не занимает времени. Верните самое раннее время, когда вы сможете оказаться в нижней правой клетке.

Функция

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
высоты в виде списка из n строк по n чисел
Возвращаетinteger
самое раннее время, когда вы можете добраться до ячейки в правом нижнем углу

Ограничения

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • Каждое значение от 0 до n²-1 встречается ровно один раз.

Примеры

Ввод
grid = [[0, 2], [3, 1]]
Вывод
2
Пояснение
Через верхнюю правую ячейку маршрут проходит через 0, 2, 1, а его наивысшая ячейка — 2. Через нижнюю левую ячейку маршрут проходит через 0, 3, 1, а его наивысшая ячейка — 3. В момент времени 2 первый маршрут находится под водой, поэтому ответ — 2.

lock icon+13 скрытых тестов при отправке

challenge icon

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

Если высоты могут повторяться и достигать 10^9, какой из ваших подходов по-прежнему работает без изменений и по чему вы бы выполняли бинарный поиск?

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

Случай 1

Случай 2

Случай 3

Ввод

grid = [[0, 2], [3, 1]]

Ожидается

2