Flood Fill 算法实战
Flood Fill(泛洪填充)是处理连通区域的基础算法,常用于图像处理或网格遍历。其核心逻辑是从种子点出发,向四周扩散,根据特定条件标记相邻节点。
一、图像渲染
题目描述
给定一个二维数组表示的图像,从起始位置 [sr, sc] 开始,将上下左右四个方向上相邻且颜色相同的像素点染成目标颜色。
思路解析
这道题本质上是深度优先搜索(DFS)。从起点开始递归染色,直到无法继续扩展。这里有个细节要注意:如果起始位置的颜色和目标颜色相同,直接返回原数组即可,避免无效操作。
代码实现
class Solution {
public:
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
void dfs(vector<vector<int>>& image, int i, int j, int srcColor, int destColor) {
int m = image.size();
int n = image[0].size();
image[i][j] = destColor;
for (int k = 0; k < 4; k++) {
int x = i + dx[k];
int y = j + dy[k];
if (x >= && x < m && y >= && y < n && image[x][y] == srcColor) {
(image, x, y, srcColor, destColor);
}
}
}
vector<vector<>> (vector<vector<>>& image, sr, sc, color) {
(image[sr][sc] != color) {
(image, sr, sc, image[sr][sc], color);
}
image;
}
};


