1、题目
https://leetcode-cn.com/problems/flood-fill/submissions/
2、题意
题解1:dfs 出始点等于要染色的的颜色直接返回数组;
class Solution {
public:
int dx[4] = {0,0,1,-1},dy[4] = {1,-1,0,0};
vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
if(image[sr][sc]==newColor) return image;
int fir = image[sr][sc];
image[sr][sc] = newColor;
for(int i=0;i<4;i++)
{
int x = dx[i]+sr,y = dy[i]+sc;
if(x>=0&&x<image.size()&&y>=0&&y<image[0].size()&&image[x][y]==fir)
floodFill(image,x,y,newColor);
}
return image;
}
};
题解2:BFS
class Solution {
public:
vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
if(image[sr][sc]==newColor) return image;
int dx[4] = {0,0,1,-1},dy[4] = {1,-1,0,0};
queue<pair<int,int>>q;
q.push(make_pair(sr,sc));
int fir = image[sr][sc];
image[sr][sc] = newColor;
while(q.size())
{
pair<int,int> t = q.front();
q.pop();
for(int i=0;i<4;i++)
{
int x = dx[i]+t.first,y = dy[i]+t.second;
if(x<0||x>=image.size()||y<0||y>=image[0].size()) continue;
else if(image[x][y]==fir)
{
image[x][y] = newColor;
q.push(make_pair(x,y));
}
}
}
return image;
}
};