Menu
CoddyTech

Rotting Oranges

MedioGrafosColapython iconjava iconcpp iconc iconjs icon+10

Recibes una cuadrícula como una lista de filas de igual longitud. Cada celda es 0 (vacía), 1 (una naranja fresca) o 2 (una naranja podrida). Cada minuto, cada naranja fresca que comparte un lado con una naranja podrida, arriba, abajo, a la izquierda o a la derecha, se pudre. Devuelve el número de minutos hasta que no quede ninguna naranja fresca, o -1 si alguna naranja fresca nunca puede pudrirse. Una cuadrícula sin naranjas frescas al inicio necesita 0 minutos.

Función

orangesRotting(grid: integer-2d-array) → integer
gridinteger-2d-array
la cuadrícula, una lista de 0, 1 y 2 por fila
Devuelveinteger
los minutos que faltan hasta que ninguna naranja esté fresca, o -1 si eso nunca ocurre

Restricciones

  • 1 ≤ grid.length ≤ 150
  • 1 ≤ grid[i].length ≤ 150
  • Cada fila tiene la misma longitud.
  • Cada grid[i][j] es 0, 1 o 2.

Ejemplos

Entrada
grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]
Salida
6
Explicación
Al escribir las celdas como (fila, columna), la podredumbre comienza en (0,0) y sigue el único camino: (0,1) en el minuto 1, (0,2) y (1,1) en el minuto 2, (2,1) en el minuto 3, (2,0) y (2,2) en el minuto 4, (2,3) en el minuto 5. La naranja en (1,3) solo toca (2,3), así que es la última en estropearse, en el minuto 6.

lock icon+21 pruebas ocultas al enviar

challenge icon

Para ir más allá

Supón que cada naranja fresca necesita su propio número de minutos para pudrirse una vez que una naranja vecina se pudre. ¿Cómo encontrarías entonces el tiempo de finalización?

Restablecer código
def orangesRotting(grid):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

6