BFS解决FloodFill算法:(Leetcode:733. 图像渲染)

题目链接:733. 图像渲染 - 力扣(LeetCode)

使用广度优先遍历算法解决该问题:

从初始位置开始搜索,初始位置符合条件就入栈,并修改初始位置值。初始位置出栈。

再从初始位置开始广度优先搜索(上下左右)其他符合条件的位置入栈,并修改它们的值(搜索到即修改,防止同一位置被多次入栈)。每次出栈一个位置,并再次从该位置广度优先搜索,循环直至栈空。

cpp 复制代码
typedef pair<int,int> PII;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
class Solution {
public:
    vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {
        //处理边界条件(初始位置即为color则不需要修改)
        if(image[sr][sc]==color)
            return image;
        
        //广度优先搜索
        int prev=image[sr][sc];//记录初始位置的值
        queue<PII> q;
        q.push({sr,sc});//将初始位置入栈
        image[sr][sc]=color;//修改值
        int m=image.size();//行数,纵坐标边界值
        int n=image[0].size();//列数,横坐标边界值
        while(q.size())
        {
            int a=q.front().first;
            int b=q.front().second;
            q.pop();//出栈
            //广度优先搜索
            for(int i=0;i<4;++i)
            {
                int x=a+dx[i];
                int y=b+dy[i];
                if(x>=0&&y>=0&&x<m&&y<n&&image[x][y]==prev)
                {
                    q.push({x,y});
                    image[x][y]=color;//修改值
                }
            }
        }
        return image;
    }
};
相关推荐
CoovallyAIHub13 小时前
Moonshine:比 Whisper 快 100 倍的端侧语音识别神器,Star 6.6K!
深度学习·算法·计算机视觉
CoovallyAIHub14 小时前
速度暴涨10倍、成本暴降6倍!Mercury 2用扩散取代自回归,重新定义LLM推理速度
深度学习·算法·计算机视觉
CoovallyAIHub14 小时前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github
CoovallyAIHub14 小时前
开源:YOLO最强对手?D-FINE目标检测与实例分割框架深度解析
人工智能·算法·github
CoovallyAIHub15 小时前
OpenClaw:从“19万星标”到“行业封杀”,这只“赛博龙虾”究竟触动了谁的神经?
算法·架构·github
刀法如飞15 小时前
程序员必须知道的核心算法思想
算法·编程开发·算法思想
徐小夕16 小时前
pxcharts Ultra V2.3更新:多维表一键导出 PDF,渲染兼容性拉满!
vue.js·算法·github
CoovallyAIHub17 小时前
OpenClaw一脚踩碎传统CV?机器终于不再只是看世界
深度学习·算法·计算机视觉
CoovallyAIHub17 小时前
仅凭单目相机实现3D锥桶定位?UNet-RKNet破解自动驾驶锥桶检测难题
深度学习·算法·计算机视觉