Menu
CoddyTech

Flood Fill

LeichtGraphenpython iconjava iconcpp iconc iconjs icon+10

Ein Bild ist ein Raster aus ganzen Zahlen, wobei jede Zahl die Farbe eines Pixels angibt. Du erhältst das Bild als Liste von Zeilen, ein Startpixel in Zeile sr und Spalte sc sowie eine neue color. Färbe die zusammenhängende Region des Startpixels neu ein: jedes Pixel mit derselben Farbe wie das Startpixel, das du von dort aus erreichen kannst, indem du dich durch Pixel derselben Farbe nach oben, unten, links oder rechts bewegst. Gib das Bild nach dem Neufärben zurück.

Funktion

floodFill(image: integer-2d-array, sr: integer, sc: integer, color: integer) → integer-2d-array
imageinteger-2d-array
das Bild als Liste von Zeilen, eine Zahl pro Pixel
srinteger
die Zeile des Startpixels, gezählt ab 0
scinteger
die Spalte des Startpixels, gezählt ab 0
colorinteger
die neue Farbe für den Bereich
Gibt zurückinteger-2d-array
Das Bild, nachdem der Bereich neu gezeichnet wurde

Einschränkungen

  • 1 ≤ image.length ≤ 80
  • 1 ≤ image[i].length ≤ 80
  • Jede Zeile hat dieselbe Länge.
  • 0 ≤ image[i][j], color ≤ 65535
  • 0 ≤ sr < image.length und 0 ≤ sc < image[0].length

Beispiele

Eingabe
image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]sr = 0sc = 0color = 5
Ausgabe
[[5, 5, 0], [5, 0, 5], [5, 5, 5]]
Erklärung
Der Startpunkt hat die Farbe 1. Die 1 rechts davon, die 1en in der linken Spalte und in der unteren Zeile sowie die 1 über der unteren rechten Ecke sind alle damit verbunden, sodass alle sieben zu 5 werden. Die beiden 0en haben eine andere Farbe und behalten sie.

lock icon+18 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Wie würde sich deine Lösung ändern, wenn auch Pixel, die sich nur an einer Ecke berühren, als verbunden gelten würden?

Code zurücksetzen
def floodFill(image, sr, sc, color):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

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