Menu
CoddyTech

Flood Fill

FacileGrafipython iconjava iconcpp iconc iconjs icon+10

Un'immagine è una griglia di numeri interi, in cui ogni numero rappresenta il colore di un pixel. Ricevi l'immagine come un elenco di righe, un pixel iniziale alla riga sr e alla colonna sc, e un nuovo color. Ridipingi la regione che contiene il pixel iniziale: tutti i pixel dello stesso colore del pixel iniziale che puoi raggiungere da esso spostandoti in alto, in basso, a sinistra o a destra attraverso pixel dello stesso colore. Restituisci l'immagine dopo averla ridipinta.

Funzione

floodFill(image: integer-2d-array, sr: integer, sc: integer, color: integer) → integer-2d-array
imageinteger-2d-array
l'immagine come un elenco di righe, un numero per pixel
srinteger
la riga del pixel iniziale, contando da 0
scinteger
la colonna del pixel iniziale, contando da 0
colorinteger
il nuovo colore per la regione
Restituisceinteger-2d-array
l'immagine dopo che la regione viene ridisegnata

Vincoli

  • 1 ≤ image.length ≤ 80
  • 1 ≤ image[i].length ≤ 80
  • Ogni riga ha la stessa lunghezza.
  • 0 ≤ image[i][j], color ≤ 65535
  • 0 ≤ sr < image.length and 0 ≤ sc < image[0].length

Esempi

Input
image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]sr = 0sc = 0color = 5
Output
[[5, 5, 0], [5, 0, 5], [5, 5, 5]]
Spiegazione
Il punto di partenza contiene il colore 1. L'1 alla sua destra, gli 1 lungo la colonna di sinistra e la riga in basso, e l'1 sopra l'angolo in basso a destra sono tutti collegati a esso, quindi tutti e sette diventano 5. I due 0 sono di un colore diverso e rimangono tali.

lock icon+18 test nascosti all’invio

challenge icon

Per approfondire

Come cambierebbe la tua soluzione se anche i pixel che si toccano solo in un angolo fossero considerati connessi?

Ripristina il codice
def floodFill(image, sr, sc, color):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

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