面试题 08.10. 颜色填充
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/color-fill-lcci/submissions/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目分析
参考链接:十分简单的递归代码解决问题
image[sr][sc]==initColor 为周围区域
class Solution {
public:
void backtracking(vector<vector<int>>& image, int sr, int sc, int newColor , int initColor){//在[sr,sc]上填newcolor
if(sr < 0 || sc < 0 || sr >= image.size() || sc >= image[0].size() ||image[sr][sc]!=initColor){
return ;
}
image[sr][sc] = newColor;
backtracking(image, sr + 1, sc, newColor, initColor);
backtracking(image, sr - 1, sc, newColor, initColor);
backtracking(image, sr, sc + 1, newColor, initColor);
backtracking(image, sr, sc - 1, newColor, initColor);
}
vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
int initColor = image[sr][sc];
if(newColor == initColor) return image;
backtracking(image, sr, sc, newColor, initColor);
return image;
}
};