Menu
CoddyTech

Swim in Rising Water

Otrzymujesz siatkę n × n wysokości, zawierającą każdą liczbę od 0 do n²-1 dokładnie raz, w postaci listy wierszy. Deszcz zaczyna padać w chwili 0, a 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 jest zalana. Zaczynasz w komórce w lewym górnym rogu. Możesz przepłynąć z jednej komórki do komórki sąsiadującej z nią bokiem, jeśli obie są zalane; przepłynięcie nie zajmuje czasu. 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 zawierających 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 komórki 0, 2, 1, a najwyższa z nich ma wartość 2. Przez lewą dolną komórkę trasa przebiega przez komórki 0, 3, 1, a najwyższa z nich ma wartość 3. W chwili 2 pierwsza trasa jest pod wodą, więc odpowiedzią jest 2.

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

challenge icon

Pytanie dodatkowe

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

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

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

2