Menu
CoddyTech

Swim in Rising Water

Ti viene fornita una griglia n × n di altezze che contiene ogni numero da 0 a n²-1 esattamente una volta. Al tempo t, l’acqua raggiunge ovunque l’altezza t, quindi ogni cella con altezza pari o inferiore a t è sommersa. Parti dalla cella in alto a sinistra. Puoi nuotare, senza impiegare tempo, fino a una cella che condivide un lato con la tua quando entrambe sono sommerse. Restituisci il tempo minimo in cui puoi raggiungere la cella in basso a destra.

Funzione

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
le altezze, come un elenco di n righe di n numeri
Restituisceinteger
il momento più precoce in cui puoi raggiungere la cella in basso a destra

Vincoli

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • Ogni valore da 0 a n²-1 compare esattamente una volta.

Esempi

Input
grid = [[0, 2], [3, 1]]
Output
2
Spiegazione
Attraverso la cella in alto a destra il percorso è 0, 2, 1, con la cella più alta pari a 2. Attraverso quella in basso a sinistra è 0, 3, 1, con la cella più alta pari a 3. Al tempo 2 il primo percorso è sott'acqua.
challenge icon

Per approfondire

Se le altezze potessero ripetersi e arrivare a 10^9, quale dei tuoi approcci funzionerebbe ancora senza modifiche e su cosa faresti una ricerca binaria?

Ripristina il codice
def swimInWater(grid):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomento

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

Output atteso

2