解题思路
- 每次修改给一个方格的颜色都需要遍历四个放下 上下左右,这种重复的操作可以交给递归去做
- 如果一开始的颜色就是目标颜色,直接返回
代码
/**
* @param {number[][]} image
* @param {number} sr
* @param {number} sc
* @param {number} color
* @return {number[][]}
*/
var floodFill = function (image, sr, sc, newColor) {
const color = image[sr][sc]
if(color === newColor) return image
const iter = (sr, sc) => {
if (image[sr][sc] === color) {
image[sr][sc] = newColor
// 上
if (sr >= 1) {
iter(sr - 1, sc)
}
// 下
if (sr + 1 < image.length) {
iter(sr + 1, sc)
}
// 左
if (sc >= 1) {
iter(sr, sc - 1)
}
// 右
if (sc + 1 < image[0].length) {
iter(sr, sc + 1)
}
}
}
iter(sr, sc)
return image
};