当前位置 博文首页 > 文章内容

    733. 图像渲染 - 8月16日

    作者: 栏目:未分类 时间:2020-08-16 16:00:08

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    题目

    733. 图像渲染

     

     

     

     

    我的思路

    很明显的深搜或者广搜,用一个辅助矩阵来记录已经搜索过的像素点
    我使用广搜来解决:
        初始化队列,加入一个原始坐标
        当队列不为空时,循环:取出队头,若满足条件(改色,把四周为搜索过的节点加入队列)

    我的实现

    class Solution {
    public:
        vector<pair<int,int>> steps ;
        vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int newColor) {
            steps.push_back(make_pair<int,int>(1,0));
            steps.push_back(make_pair<int,int>(-1,0));
            steps.push_back(make_pair<int,int>(0,1));
            steps.push_back(make_pair<int,int>(0,-1));
            vector<vector<bool>> visitedMap;
            for(int i=0;i<image.size();i++){
                
                visitedMap.push_back(vector<bool>(image[0].size(),false));}
            int rawColor = image[sr][sc];
            queue<pair<int,int>> Q;
            visitedMap[sr][sc]=true;
            Q.push(make_pair(sr,sc));
            while(!Q.empty()){
                int x = Q.front().first;
                int y = Q.front().second;
                //cout<<x<<"\t"<<y<<endl;
                //int tempColor = image[Q.front().first][Q.front().second];
                Q.pop();
                if(image[x][y]==rawColor)
                {
                    image[x][y] = newColor;
                    for(auto it:steps){
                        if((x+it.first)>=0&&(x+it.first)<image.size()&&(y+it.second)>=0&&(y+it.second)<image[0].size())
                        if(visitedMap[x+it.first][y+it.second]==false){
                            Q.push(make_pair(x+it.first,y+it.second));
                            visitedMap[x+it.first][y+it.second] = true;
                        }
                    }
                    
                }
    
            }
            return image;
    
        }
    };

     

    拓展学习