zoukankan      html  css  js  c++  java
  • LeetCode 733. 图像渲染 bfs模板

    地址  https://leetcode-cn.com/problems/flood-fill/

    有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 065535 之间。
    
    给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。
    
    为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,
    接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相同的相连像素点,……,
    重复该过程。将所有有记录的像素点的颜色值改为新的颜色值。 最后返回经过上色渲染后的图像。 示例
    1: 输入: image = [[1,1,1],[1,1,0],[1,0,1]] sr = 1, sc = 1, newColor = 2 输出: [[2,2,2],[2,2,0],[2,0,1]] 解析: 在图像的正中间,(坐标(sr,sc)=(1,1)), 在路径上所有符合条件的像素点的颜色都被更改成2。 注意,右下角的像素没有更改为2, 因为它不是在上下左右四个方向上与初始点相连的像素点。 注意: image 和 image[0] 的长度在范围 [1, 50] 内。 给出的初始点将满足 0 <= sr < image.length 和 0 <= sc < image[0].length。 image[i][j] 和 newColor 表示的颜色值在范围 [0, 65535]内。

    算法1
    bfs 模板

    class Solution {
    public:
        const int dx[4] = {1, 0, 0, -1};
        const int dy[4] = {0, 1, -1, 0};
        vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
            int currColor = image[sr][sc];
            if (currColor == newColor) return image;
            int n = image.size(), m = image[0].size();
            queue<pair<int, int>> que;
            que.emplace(sr, sc);
            image[sr][sc] = newColor;
            while (!que.empty()) {
                int x = que.front().first, y = que.front().second;
                que.pop();
                for (int i = 0; i < 4; i++) {
                    int mx = x + dx[i], my = y + dy[i];
                    if (mx >= 0 && mx < n && my >= 0 && my < m && image[mx][my] == currColor) {
                        que.emplace(mx, my);
                        image[mx][my] = newColor;
                    }
                }
            }
            return image;
        }
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    ntpdate
    动态查看日志
    eclipse proxy
    远程调试
    pe and elf
    03scikit-learn非监督学习
    15管家婆小项目
    02scikit-learn模型训练
    01scikit-learn数据集下载
    scikit-learn中文api
  • 原文地址:https://www.cnblogs.com/itdef/p/13513291.html
Copyright © 2011-2022 走看看