前言
Flood Fill(泛洪填充)是处理网格连通区域的基础算法,常用于图像处理或图论中的连通分量统计。其核心逻辑是从种子点出发,向四周扩散,标记所有满足条件的相邻节点。
一、图像渲染
题目解析
给定一个 m * n 的二维数组,从起始位置 [sr, sc] 开始,将上下左右四个方向上相邻且与起始位置初始颜色相同的像素点进行染色,直到没有其他原始颜色的相邻像素。

解题思路
这道题本质上是典型的深度优先搜索(DFS)。从起点开始递归遍历,改变当前节点颜色并继续探索邻居。
注意:如果起始位置的颜色已经等于目标颜色,直接返回原数组即可,避免无效操作。
代码实现
class Solution {
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
public:
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];
(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;
}
};





