Проблема

Изображение представлено целочисленной сеткой m x n image, где image[i][j] представляет значение пикселя изображения.

Вам также даны три целых числа sr, sc и newColor. Вы должны выполнить заливку изображения, начиная с пикселя image[sr][sc].

Чтобы выполнить заливку, рассмотрите начальный пиксель плюс все пиксели, соединенные в четырех направлениях с начальным пикселем того же цвета, что и начальный пиксель, плюс все пиксели, соединенные 4-направленно к этим пикселям (также с тем же цветом) и так далее. Замените цвет всех вышеупомянутых пикселей на newColor.

Верните измененное изображение после выполнения заливки.

Пример 1:

Input: image = [[1,1,1],[1,1,0],[1,0,1]], sr = 1, sc = 1, newColor = 2
Output: [[2,2,2],[2,2,0],[2,0,1]]
Explanation: From the center of the image with position (sr, sc) = (1, 1) (i.e., the red pixel), all pixels connected by a path of the same color as the starting pixel (i.e., the blue pixels) are colored with the new color.
Note the bottom corner is not colored 2, because it is not 4-directionally connected to the starting pixel.

Пример 2:

Input: image = [[0,0,0],[0,0,0]], sr = 0, sc = 0, newColor = 2
Output: [[2,2,2],[2,2,2]]

Решение

Подход, который я выбрал для решения этого подхода, представлял собой шаблон поиска в 4 направлениях из каждой точки с использованием рекурсии.

  1. Проверьте, верны ли первоначальные входные данные и не нужно ли вообще внести какие-либо изменения.
  2. «newColorCheck» — это внутренняя рекурсивная функция. В базовом случае проверяется, является ли строка или столбец недействительной или текущая точка на изображении не равна начальному значению начальной точки. Если базовый случай терпит неудачу, нам нужно использовать рекурсию.
  3. Сначала переключите цвет текущей точки, а затем выполните поиск по всем 4 направлениям.
  4. Не забудьте вызвать внутреннюю функцию с начальными значениями