【剑斩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;
    }
};
相关推荐
测试秃头怪27 分钟前
如何评估自动化测试脚本的编写时间和维护工作量?
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
战族狼魂27 分钟前
GPT-5.6与Grok 4.5重磅发布
人工智能·算法·大模型·大语言模型
白日焰火11 小时前
基于 OpenSpec 实现规范驱动开发
算法·交互
imuliuliang1 小时前
关于图搜索算法的性能建模与可预测性研究7
算法
ForDreamMusk2 小时前
批量归一化
人工智能·算法·机器学习
Ivanqhz3 小时前
刚体的自由度
人工智能·算法
KaMeidebaby3 小时前
卡梅德生物技术快报|抗体合成:多肽抗体合成工程化方案:Nsp2 保守肽多抗制备与多维度验证
前端·网络·数据库·人工智能·算法
Yang_jie_034 小时前
笔记:数据结构(栈是否使用底指针以及头指针的初始化值)
数据结构·笔记·算法
2301_800895104 小时前
信息安全数学基础复习
算法
爱折腾的小黑牛5 小时前
简记往来批量录入功能的实现:从文本到结构化数据
前端·算法