Menu
CoddyTech

Swim in Rising Water

Du erhältst ein n × n-Raster mit Höhen, das jede Zahl von 0 bis n²-1 genau einmal enthält. 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 ohne Zeitverlust zu einer Zelle schwimmen, die eine Seite mit deiner Zelle teilt, wenn beide unter Wasser sind. 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 Liste aus 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
Durch die Zelle oben rechts verläuft die Route 0, 2, 1, wobei die höchste Zelle 2 ist. Durch die Zelle unten links verläuft sie 0, 3, 1, wobei die höchste Zelle 3 ist. Zum Zeitpunkt 2 liegt die erste Route unter Wasser.
challenge icon

Weiterführende Frage

Wenn sich Höhen wiederholen könnten und bis zu 10^9 reichen, welcher deiner Ansätze würde weiterhin unverändert funktionieren, und worüber würdest du eine binäre Suche durchführen?

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

Test #1

Test #2

Test #3

Argument

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

Erwartete Ausgabe

2