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

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

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

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

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

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;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营第三十四天|1005.K次取反后最大化的数组和,134. 加油站,135. 分发糖果

目录 1005.K次取反后最大化的数组和思路代码 134. 加油站思路代码 135. 分发糖果思路代码 1005.K次取反后最大化的数组和 题目链接&#xff1a;1005.K次取反后最大化的数组和 文档讲解&#xff1a;代码随想录 视频讲解&#xff1a;贪心算法&#xff0c;这不就是常识&#xff1f…

阿赵UE学习笔记——30、HUD简单介绍

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   继续学习虚幻引擎&#xff0c;这次来学习一下HUD的基础使用。 一、 什么是HUD HUD(Head-Up Display)&#xff0c;也就是俗称的抬头显示。很多其他领域里面有用到这个术语&#xff0c;比如开车的朋友可能会接触过&#xf…

【Camera Sensor Driver笔记】一、Sensor基本概念

时钟 sensor clock sensor的输入时钟 MCLK 输出时钟&#xff1a; 1. VTPixelClock&#xff1a;会影响sensor内部的帧率、曝光 VTPixelClock(vt_clk)Video Timing Clock, From sensor PLL VTPixelClock Framelengthlines x LinelengthPixelClock x FPS Framelengthlines L…

页面加载事件

2.1窗口加载事件 1.window.οnlοadfuction(){} 或者 window.addEventListerner(‘load’,function(){}) doucument.addEventListner(DOMContentLoaded,fuction(){})这个反应更快些

是德软件89600 RFID使用笔记

文章目录 1、进入RFID软件&#xff1a;2、RFID软件解调设置项3、如何查看一段指令数据 本文是日常工作的笔记分享。 lauch VSA&#xff08;矢量频谱分析&#xff09;后会出现以下界面&#xff1a; 当然这是因为频谱仪的输入有信号才显示如下&#xff1a; 否则就显示频谱仪的噪…

初识C++ · 类和对象(中)(2)

前言&#xff1a;上篇文章已经介绍了6个默认成员函数中的3个函数&#xff0c;分别是构造函数&#xff0c;析构函数&#xff0c;拷贝构造函数&#xff0c;本文介绍的是后三个&#xff0c;赋值运算符重载&#xff0c;const成员函数&#xff0c;取地址操纵符重载。 目录​​​​​…

通过使用XShell工具、Nginx环境实现服务器项目构建与发布

前言&#xff1a; 在信息化和数字化的今天&#xff0c;网站和应用的构建与发布已成为企业发展的重要一环。为了确保项目的顺利上线和稳定运行&#xff0c;选择合适的工具和环境至关重要。本文将详细介绍如何通过XShell工具以及Nginx环境来实现服务器项目的构建与发布&#xff0…

vue 实现级联选择器功能

vue开发中&#xff0c;通过使用 Element UI 的 el-cascader 组件来实现级联选择器功能,下面是一个示例代码&#xff0c;演示如何使用 el-cascader 组件初始化级联选择器&#xff0c;并设置默认值为单位 测试1 和部门 测试11 <template><div><el-cascaderv-mode…

transformer中,多头注意力机制

在Transformer模型中&#xff0c;多头注意力机制通常在自注意力机制&#xff08;Self-Attention&#xff09;的步骤中使用。自注意力机制是Transformer中的核心组件之一&#xff0c;用于在输入序列中建立全局依赖关系&#xff0c;并为每个位置生成一个上下文相关的表示。 具体…

datax介绍和用法

Datax 简介 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台&#xff0c;实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。 DataX本身作为数据同步框架&…

前端科举面经-HTML篇

前端面试-HTML篇 什么是http?http和https有什么区别https的加密过程?http2.0有什么改进?src和href的区别对html语义化标签的理解?script标签中defer和asyc的区别?举出几个常见的行内、块级元素什么是webworker&#xff1f;iframe的优缺点&#xff1f;介绍一下tcp三次握手f…

智慧图书馆为什么用rfid电子标签而不是磁条

智慧图书馆一般都会使用RFID技术&#xff0c;而不是磁条。以下是几个原因&#xff1a; 1. 效率更高&#xff1a;RFID技术可以实现非接触式读取&#xff0c;图书馆工作人员可以同时读取多本书的信息&#xff0c;大大提高了借还书的效率。 2. 数据量更大&#xff1a;RFID标签可以…

大模型-入门小知识

大模型是什么 大量参数&#xff08;上亿&#xff09;深度学习模型 人工只能包含机器学习&#xff0c;深度学习,深度学习包括大模型 单个神经元的计算模型&#xff1a; 大模型是怎么训练的 之前是算法&#xff08;神经网络&#xff09;----> 训练&#xff08;门槛降低&…

K8s: 控制器之Deployment对象

Deployment 对象 1 &#xff09;概述 为什么大家都用Deployment&#xff0c;不直接用Pod&#xff0c;不直接用 Replica Set因为deployment就是专门像一个管理员一样&#xff0c;专门来管这些散落在各处的各种各样的PodDeployment不仅会管Pod&#xff0c;还会管Replica Set只要…

LlamaIndex代理的逐步执行框架,包括代理运行器和代理工作者

原文地址&#xff1a;llamaindex-agent-step-wise-execution-framework-with-agent-runners-agent-workers 2024 年 4 月 15 日 LlamaIndex lower-level 代理 API 提供了一系列功能&#xff0c;超出了仅从头到尾执行用户查询的范围。 介绍 LlamaIndex 提供了一个全面的代理 API…

Python3:函数的圈复杂度

你有没有见过那种长达几百行、逻辑错综复杂的“巨无霸”函数&#xff1f;那样的函数不光难读&#xff0c;改起来同样困难重重&#xff0c;人人唯恐避之不及。 编写函数最重要的原则就是&#xff1a;别写太复杂的函数。那什么样的函数才能算是过于复杂&#xff1f;一般会通过两…

设计模式- 中介者模式(Mediator)

1. 概念 中介者模式&#xff08;Mediator Pattern&#xff09;&#xff0c;是一种对象行为型模式。该模式的主要目的是定义一个中介对象来封装一系列对象之间的交互&#xff0c;使原有对象之间的耦合变得松散&#xff0c;并且可以独立地改变它们之间的交互。 2. 原理结构图 抽…

【数据分析】学习笔记day1

sklearn与经典机器学习算法 机器学习的利器——sklearn机器学习的7个流程:sklearn的功能主要分为六大部分:目标: 1、掌握sklearn的基本用法 2、掌握线性回归的原理,并进行实践操作 3、理解监督学习经典算法、如K-近邻算法 4、理解非监督学习经典算法机器学习的利器——skle…

标准化,信息化,数字化,智能化

随着科技的飞速发展&#xff0c;标准化、信息化、数字化和智能化已经成为当今社会的主要发展趋势。这些趋势正在改变我们的生活、工作和社会&#xff0c;带来了前所未有的机遇和挑战。在这个快速变化的时代&#xff0c;我们是否已经做好了迎接未来的准备呢&#xff1f; 标准化…

Python Selenium无法打开Chrome浏览器处理自定义浏览器路径

问题 在使用Python Selenium控制Chrome浏览器操作的过程中&#xff0c;由于安装的Chrome浏览器的版本找不到对应版本的驱动chromedriver.exe文件&#xff0c;下载了小几个版本号的驱动软件。发现运行下面的代码是无法正常使用的&#xff1a; from selenium import webdriver …