原题链接:733. 图像渲染
solution: 一道深度优先搜索题,关键是看懂题目,只有和最开始那个点颜色相同的,上下左右相邻的才能被染色,并且还需要加一个特判染色的格子如果等于要染的颜色就退出。
class Solution {
public:
void dfs(vector<vector<int>>& image, int sr, int sc, int newColor,int oldColor)
{
if(sr<0 || sc<0 || sr==image.size() || sc==image[0].size()) return; //越界
if(image[sr][sc]!=oldColor || image[sr][sc]==newColor) return;
image[sr][sc] = newColor;
dfs(image, sr - 1, sc,newColor,oldColor);
dfs(image, sr + 1, sc,newColor,oldColor);
dfs(image, sr, sc - 1,newColor,oldColor);
dfs(image, sr, sc + 1,newColor,oldColor);
}
vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
int oldcolor = image[sr][sc];
dfs(image,sr,sc,newColor,oldcolor);
return image;
}
};