Menu
CoddyTech

Swim in Rising Water

Dostajesz siatkę n × n wysokości, która zawiera każdą liczbę od 0 do n²-1 dokładnie raz. W chwili t woda wszędzie sięga wysokości t, więc każda komórka o wysokości nie większej niż t znajduje się pod wodą. Zaczynasz w komórce w lewym górnym rogu. Możesz bez straty czasu przepłynąć do komórki sąsiadującej z twoją bokiem, jeśli obie znajdują się pod wodą. Zwróć najwcześniejszy moment, w którym możesz znaleźć się w komórce w prawym dolnym rogu.

Funkcja

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
wysokości, jako lista n wierszy po n liczb
Zwracainteger
najwcześniejszy moment, w którym możesz dotrzeć do komórki w prawym dolnym rogu

Ograniczenia

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • Każda wartość od 0 do n²-1 występuje dokładnie raz.

Przykłady

Wejście
grid = [[0, 2], [3, 1]]
Wyjście
2
Wyjaśnienie
Przez prawą górną komórkę trasa przebiega przez 0, 2, 1, a najwyższa komórka to 2. Przez lewą dolną komórkę przebiega przez 0, 3, 1, a najwyższa komórka to 3. W chwili 2 pierwsza trasa jest pod wodą.
challenge icon

Pytanie dodatkowe

Jeśli wysokości mogłyby się powtarzać i osiągać 10^9, które z Twoich podejść nadal działałoby bez zmian i czego dotyczyłoby wyszukiwanie binarne?

Zresetuj kod
def swimInWater(grid):
    # Napisz kod tutaj

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

2