【剑斩OFFER】算法的暴力美学——LeetCode 733 题:图像渲染

一、题目描述

二、算法原理

思路:层序遍历(BFS)解决 FloodFill 题

假设从(2,2)开始,我们先把(2,2)入队列,在把 image【 2】【2】 = color ,然后遍历他的上下左右的值是否和他一样 = 1,所以我们把(2,2)入队列之前先保存他对应的值,如果上下左右有值和他一样,那么入队列,直到队列为空;

三、代码实现

cpp 复制代码
class Solution {
    typedef pair<int,int> PII;
    //上下左右的移动值
    int dy[4] = {0,0,-1,1};
    int dx[4] = {-1,1,0,0};
public:
    vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) {
        int target = image[sr][sc];//保持原始值
        if(target == color) return image;

        int wight = image[0].size();//宽
        int high = image.size();//高

        queue<PII> que;
        que.push({sr,sc});//使用层序遍历
        image[sr][sc] = color;
        while(que.size())//队列不为空继续查找
        {
            auto [x,y] = que.front();
            que.pop();
            for(int i = 0; i < 4; i++)//上下左右查找符合题目要求的值
            {
                int a = x + dy[i];
                int b = y + dx[i];
                if(a >= 0 && a < high && b >= 0 && b < wight && image[a][b] == target)//符合题目要求
                {
                    image[a][b] = color;
                    que.push({a,b});
                }
            }
        }
        return image;
    }
};
相关推荐
Raink老师7 小时前
【AI面试临阵磨枪-62】设计基于 RAG 的内部知识库问答平台(多租户、权限、文件上传、实时更新)
人工智能·面试·职场和发展
smj2302_796826528 小时前
解决leetcode第3943题递增后的数对数量
数据结构·python·算法·leetcode
炽烈小老头9 小时前
【每天学习一点算法 2026/05/25】矩阵中的最长递增路径
学习·算法·矩阵
我爱cope9 小时前
【Agent智能体6 | 智能体AI评估】
人工智能·职场和发展
叁散10 小时前
实验报告:5G 仿真环境与基本链路模拟
算法
从负无穷开始的三次元代码生活10 小时前
算法零碎灵感点分享
算法
染指111011 小时前
9.LangChain框架(实现RAG)
数据库·人工智能·算法·机器学习·ai·大模型
我爱cope11 小时前
【Agent智能体5 | 任务分解:识别工作流中的步骤】
人工智能·职场和发展
大数据三康11 小时前
在spyder进行的遗传算法练习
开发语言·python·算法
Gene_202211 小时前
轮式底盘的微分平坦
算法