Menu
CoddyTech

Swim in Rising Water

Тебе дана сетка высот размером n × n, в которой каждое число от 0 до n²-1 встречается ровно один раз. В момент времени 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 первый маршрут оказывается под водой.
challenge icon

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

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

Сбросить код
def swimInWater(grid):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

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

Ожидаемый вывод

2