less than 1 minute read

<-E 733> Flood Fill

class Solution {
public:
    vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
        int prevColor = image[sr][sc];
        dfs(image, sr, sc, prevColor, newColor);
        return image;
    }
    
    void dfs(vector<vector<int>>& image, int sr, int sc, int prevColor, int newColor){
        if(sr<0 || sr>=image.size() || sc<0 || sc>=image[0].size()){
            return;
        }
        
        if(image[sr][sc] != prevColor){
            return;
        }
        if(image[sr][sc] == newColor){
            return;
        }
        image[sr][sc] = newColor;
        dfs(image,sr + 1, sc, prevColor, newColor);
        dfs(image,sr - 1, sc, prevColor, newColor);
        dfs(image,sr, sc + 1, prevColor, newColor);
        dfs(image, sr, sc-1, prevColor, newColor);
    }  
};