Menu
CoddyTech

Flood Fill

FácilGrafospython iconjava iconcpp iconc iconjs icon+10

Una imagen es una cuadrícula de números enteros, donde cada número representa el color de un píxel. Recibes la imagen como una lista de filas, un píxel inicial en la fila sr y la columna sc, y un nuevo color. Vuelve a pintar la región que contiene el píxel inicial: cada píxel del mismo color que el píxel inicial al que puedes llegar desde este avanzando hacia arriba, abajo, izquierda o derecha a través de píxeles de ese mismo color. Devuelve la imagen después de volver a pintarla.

Función

floodFill(image: integer-2d-array, sr: integer, sc: integer, color: integer) → integer-2d-array
imageinteger-2d-array
la imagen como una lista de filas, un número por píxel
srinteger
la fila del píxel inicial, contada desde 0
scinteger
la columna del píxel inicial, contada desde 0
colorinteger
el nuevo color de la región
Devuelveinteger-2d-array
la imagen después de que se vuelva a dibujar la región

Restricciones

  • 1 ≤ image.length ≤ 80
  • 1 ≤ image[i].length ≤ 80
  • Cada fila tiene la misma longitud.
  • 0 ≤ image[i][j], color ≤ 65535
  • 0 ≤ sr < image.length y 0 ≤ sc < image[0].length

Ejemplos

Entrada
image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]sr = 0sc = 0color = 5
Salida
[[5, 5, 0], [5, 0, 5], [5, 5, 5]]
Explicación
La casilla inicial contiene el color 1. El 1 a su derecha, los 1 de la columna izquierda y de la fila inferior, y el 1 encima de la esquina inferior derecha están conectados a ella, así que los siete pasan a ser 5. Los dos 0 son de otro color y lo conservan.

lock icon+18 pruebas ocultas al enviar

challenge icon

Para ir más allá

¿Cómo cambiaría tu solución si los píxeles que solo se tocan en una esquina también se consideraran conectados?

Restablecer código
def floodFill(image, sr, sc, color):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]
sr = 0
sc = 0
color = 5

Esperado

[[5, 5, 0], [5, 0, 5], [5, 5, 5]]