class Solution {
public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
/*1 1 1 2 2 2
1 1 0 ----> 2 2 0
1 0 1 2 0 1
思路还是深度优先搜索 找和原来位置相同的数一直找下去一篇 替换成新的数
*/
if(image == null || image[0].length == 0 ) return image;
//定义搜索的四个方向
int dx[]={-1,0,1,0};//上左下右的顺序
int dy[]={0,-1,0,1};
if(image[sr][sc] == newColor) return image;//防止那种死循环
int oldColor = image[sr][sc];
image[sr][sc] = newColor;
for(int i = 0 ; i<4 ;i++){//然后四个方向搜索
int x = sr+dx[i];
int y = sc+dy[i];
if(x >= 0 && x< image.length && y>=0&& y< image[0].length && image[x][y]==oldColor){
floodFill(image,x,y,newColor);
}
}
return image;
}
}
FloodFill
最新推荐文章于 2024-07-11 17:01:08 发布