Menu
CoddyTech

Flood Fill

简单图python iconjava iconcpp iconc iconjs icon+10

图像是由整数构成的网格,每个数字表示一个像素的颜色。你会得到一个由行组成的列表、起始像素所在的行 sr 和列 sc,以及一种新的 color。重新绘制包含起始像素的区域:将所有与起始像素颜色相同,并且可以通过同色像素向上、向下、向左或向右移动到达的像素重新着色。返回重新绘制后的图像。

函数

floodFill(image: integer-2d-array, sr: integer, sc: integer, color: integer) → integer-2d-array
imageinteger-2d-array
将图像表示为一个由行组成的列表,每个像素对应一个数字
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。所有 7 个 1 都通过相邻的 1 与它相连,沿着左侧列向下、沿着底行前进,再沿着右侧边缘向上,所以它们都会变成 5。两个 0 保持原来的颜色。
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]]