https://leetcode.com/problems/flood-fill/ | Easy |
---|
Вам дана целочисленная матрица image
размером m x n
, представляющая изображение, где image[i][j]
обозначает цвет пикселя. Также даны три целых числа: sr
, sc
и color
.
Выполните операцию "заливки" (flood fill) на изображении, начиная с пикселя image[sr][sc]
. Замените цвет начального пикселя и всех соседних пикселей с тем же исходным цветом на новый цвет color
.LeetCode
Соседние пиксели — это пиксели, которые имеют общую сторону с текущим пикселем (вверх, вниз, влево, вправо). Диагональные пиксели не считаются соседними.
Верните изменённую матрицу image
после выполнения операции заливки.
class Solution {
fun floodFill(image: Array<IntArray>, sr: Int, sc: Int, color: Int): Array<IntArray> {
val originalColor = image[sr][sc]
if (originalColor == color) return image
val m = image.size
val n = image[0].size
val directions = arrayOf(
intArrayOf(0, 1),
intArrayOf(1, 0),
intArrayOf(0, -1),
intArrayOf(-1, 0)
)
fun dfs(r: Int, c: Int) {
if (r < 0 || r >= m || c < 0 || c >= n || image[r][c] != originalColor) return
image[r][c] = color
for (dir in directions) {
dfs(r + dir[0], c + dir[1])
}
}
dfs(sr, sc)
return image
}
}