LeetCode——733. 图像渲染

目录

  • 1.问题描述
  • 2.解决办法
    • 1.深度优先搜索
  • 3.代码实现

1.问题描述

LeetCode——733. 图像渲染_第1张图片

2.解决办法

1.深度优先搜索

我们从给定的起点开始,进行深度优先搜索。每次搜索到一个方格时,如果其与初始位置的方格颜色相同,就将该方格的颜色更新,以防止重复搜索;如果不相同,则进行回溯。

注意:因为初始位置的颜色会被修改,所以我们需要保存初始位置的颜色,以便于之后的更新操作。

LeetCode——733. 图像渲染_第2张图片
LeetCode——733. 图像渲染_第3张图片
LeetCode——733. 图像渲染_第4张图片

3.代码实现

class Solution {
    int[] dx = {1, 0, 0, -1};
    int[] dy = {0, 1, -1, 0};

    public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
        int currColor = image[sr][sc];
        if (currColor != newColor) {
            dfs(image, sr, sc, currColor, newColor);
        }
        return image;
    }

    public void dfs(int[][] image, int x, int y, int color, int newColor) {
        if (image[x][y] == color) {
            image[x][y] = newColor;
            for (int i = 0; i < 4; i++) {
                int mx = x + dx[i], my = y + dy[i];
                if (mx >= 0 && mx < image.length && my >= 0 && my < image[0].length) {
                    dfs(image, mx, my, color, newColor);
                }
            }
        }
    }
}

你可能感兴趣的:(算法,leetcode,深度优先,算法)