Menu
CoddyTech

Swim in Rising Water

Du erhältst ein n × n-Raster aus Höhen, das jede Zahl von 0 bis n²-1 genau einmal enthält, als Liste von Zeilen. Der Regen beginnt zum Zeitpunkt 0, und zum Zeitpunkt t steht das Wasser überall auf der Höhe t, sodass jede Zelle mit einer Höhe von höchstens t unter Wasser ist. Du startest in der Zelle oben links. Du kannst von einer Zelle in eine Zelle schwimmen, die eine Seite mit ihr teilt, wenn beide unter Wasser sind, und das Schwimmen dauert keine Zeit. Gib den frühesten Zeitpunkt zurück, zu dem du dich in der Zelle unten rechts befinden kannst.

Funktion

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
die Höhen, als eine Liste von n Zeilen mit jeweils n Zahlen
Gibt zurückinteger
der früheste Zeitpunkt, zu dem du die Zelle unten rechts erreichen kannst

Einschränkungen

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • Jeder Wert von 0 bis n²-1 kommt genau einmal vor.

Beispiele

Eingabe
grid = [[0, 2], [3, 1]]
Ausgabe
2
Erklärung
Über die Zelle oben rechts verläuft der Weg 0, 2, 1, und seine höchste Zelle ist 2. Über die Zelle unten links verläuft er 0, 3, 1, mit der höchsten Zelle 3. Zum Zeitpunkt 2 steht der erste Weg unter Wasser, daher lautet die Antwort 2.

lock icon+13 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Wenn sich Höhen wiederholen könnten und bis zu 10^9 reichen würden: Welcher deiner Ansätze würde unverändert funktionieren, und wonach würdest du bei der binären Suche suchen?

Code zurücksetzen
def swimInWater(grid):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

2