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. Единица справа от него, единицы в левом столбце и в нижней строке, а также единица над нижним правым углом связаны с ним, поэтому все семь становятся 5. Два нуля имеют другой цвет и сохраняют его.

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]]