Menu
CoddyTech

Rotting Oranges

MedioGrafiCodapython iconjava iconcpp iconc iconjs icon+10

Ricevi una griglia come elenco di righe della stessa lunghezza. Ogni cella è 0 (vuota), 1 (un’arancia fresca) o 2 (un’arancia marcia). Ogni minuto, ogni arancia fresca che condivide un lato con un’arancia marcia, sopra, sotto, a sinistra o a destra, diventa marcia. Restituisci il numero di minuti necessari affinché non rimangano arance fresche, oppure -1 se alcune arance fresche non possono mai marcire. Una griglia senza arance fresche all’inizio richiede 0 minuti.

Funzione

orangesRotting(grid: integer-2d-array) → integer
gridinteger-2d-array
la griglia, un elenco di 0, 1 e 2 per riga
Restituisceinteger
i minuti fino a quando nessuna arancia è più fresca, oppure -1 se ciò non accade mai

Vincoli

  • 1 ≤ grid.length ≤ 150
  • 1 ≤ grid[i].length ≤ 150
  • Ogni riga ha la stessa lunghezza.
  • Ogni grid[i][j] è 0, 1 oppure 2.

Esempi

Input
grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]
Output
6
Spiegazione
Indicando le celle come (riga, colonna), la muffa parte da (0,0) e segue l’unico percorso: (0,1) al minuto 1, (0,2) e (1,1) al minuto 2, (2,1) al minuto 3, (2,0) e (2,2) al minuto 4, (2,3) al minuto 5. L’arancia in (1,3) tocca solo (2,3), quindi è l’ultima a marcire, al minuto 6.

lock icon+21 test nascosti all’invio

challenge icon

Per approfondire

Supponiamo che ogni arancia fresca impieghi un numero diverso di minuti a marcire una volta che un'arancia vicina è marcia. Come troveresti allora il tempo di completamento?

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

Caso 1

Caso 2

Caso 3

Input

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

Atteso

6