Menu
CoddyTech

Swim in Rising Water

Ti viene data una griglia n × n di altezze che contiene ogni numero da 0 a n²-1 esattamente una volta, sotto forma di un elenco di righe. Inizia a piovere al tempo 0 e, 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 da una cella a una cella che condivide un lato con essa quando entrambe sono sommerse, e nuotare non richiede tempo. 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 e la cella più alta è 2. Attraverso la cella in basso a sinistra, il percorso è 0, 3, 1, con la cella più alta pari a 3. Al tempo 2 il primo percorso è sott'acqua, quindi la risposta è 2.

lock icon+13 test nascosti all’invio

challenge icon

Per approfondire

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

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

Caso 1

Caso 2

Caso 3

Input

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

Atteso

2