Menu
CoddyTech

Flood Fill

やさしいグラフpython iconjava iconcpp iconc iconjs icon+10

画像は整数のグリッドで、各数値は1つのピクセルの色を表します。画像は行のリストとして与えられ、開始ピクセルの行は sr、列は sc、新しい色は color です。開始ピクセルを含む領域を塗り直します。同じ色のピクセルを通って上、下、左、右に移動して開始ピクセルから到達できる、開始ピクセルと同じ色のすべてのピクセルが対象です。塗り直した後の画像を返してください。

関数

floodFill(image: integer-2d-array, sr: integer, sc: integer, color: integer) → integer-2d-array
imageinteger-2d-array
画像を、1ピクセルにつき1つの数値を含む行のリストとして表します
srinteger
開始ピクセルの行(0から数える)
scinteger
開始ピクセルの列(0から数える)
colorinteger
領域の新しい色
戻り値integer-2d-array
領域が再描画された後の画像

制約

  • 1 ≤ image.length ≤ 80
  • 1 ≤ image[i].length ≤ 80
  • すべての行は同じ長さです。
  • 0 ≤ image[i][j], color ≤ 65535
  • 0 ≤ sr < image.lengthかつ0 ≤ sc < image[0].length

例

入力
image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]sr = 0sc = 0color = 5
出力
[[5, 5, 0], [5, 0, 5], [5, 5, 5]]
説明
開始位置には色1があります。その右側の1、左端の列と最下段にある1、そして右下隅の上にある1はすべて開始位置につながっているため、7つすべてが5になります。2つの0は別の色なので、そのままです。

lock icon提出時に隠しテスト+18件

challenge icon

発展問題

角だけで接しているピクセルも連結しているとみなす場合、解答はどのように変わりますか?

コードをリセット
def floodFill(image, sr, sc, color):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

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

期待値

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