难度 简单
这道题实现确实不难,但是要读懂题需要花很长时间。一些无紧要的信息可以忽略,比如每个数字代表像素之类的,这道题颜色值和像素值占用了同一个地方,写入颜色就会擦掉像素,所以令人疑惑,所以忽略掉这部分信息是必要的。大概题意就是给定数组中的一个位置,从这个位置开始往这个位置的四周去遍历,如果四周相邻的数字和初始位置数字一样,则写成新的颜色。使用迭代。
执行用时 :1 ms, 在所有 Java 提交中击败了95.24%的用户
内存消耗 :40.6 MB, 在所有 Java 提交中击败了60.00%的用户
public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
fill(image, sr, sc, newColor, image[sr][sc]);
return image;
}
public void fill(int[][] image, int sr, int sc, int newColor, int num) {
if(sr < 0 || sc < 0 || sr > image.length-1 || sc > image[0].length-1 || image[sr][sc] == newColor || image[sr][sc] != num){
return;
}
if(image[sr][sc] == num){
image[sr][sc] = newColor;
fill(image, sr-1, sc, newColor, num);
fill(image, sr+1, sc, newColor, num);
fill(image, sr, sc-1, newColor, num);
fill(image, sr, sc+1, newColor, num);
}
}