733.图像渲染

最后更新于 2022-09-21 373 次阅读


https://leetcode.cn/problems/flood-fill/

class Solution {
public:
    vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
        int curcolor = image[sr][sc];
        if(newColor == image[sr][sc])
            return image;
        else
            dfs(image,sr,sc,curcolor,newColor);
        return image;
    }

    void dfs(vector<vector<int>>& image,int sr,int sc,int curcolor,int newcolor){
        int rs = image.size();       //sr边界
        int rc = image[0].size();   //sc边界
        if(image[sr][sc] == curcolor){
//如果image中有和初值一样的才进行搜索 搜索为上下左右四个方向并且存在边界值
            image[sr][sc] = newcolor; //赋值
            if(sr - 1 >= 0)      dfs(image,sr - 1,sc,curcolor,newcolor);
            if(sr + 1 <= rs - 1) dfs(image,sr + 1,sc,curcolor,newcolor);
            if(sc - 1 >= 0)      dfs(image,sr,sc - 1,curcolor,newcolor);
            if(sc + 1 <= rc - 1) dfs(image,sr,sc + 1,curcolor,newcolor);
        }

    }
};