BFS算法解决FloodFill问题图像渲染岛屿数量岛屿的最大面积被围住的区域图像渲染题目解析就是将这里面指定一个元素将其上下左右和这个一样的值全部修改成另外一个值并且其上下左右也可以进行上下左右进行扩展也就是将这个一片区域都修改成color指定值BFS直接遍历所有下标并且看其上下左右下标不断进行修改不断进行扩展延申此时就可以使用队列放入 int[ ] 数组对应存放行、列下标每一次不断取出进行上下左右延申判断其是否和image[sr][sc]如果一样就继续放入队列中不断进行操作直到队列为空这里通过上下左右对应下标分别classSolution{int[]dx{0,0,1,-1};int[]dy{1,-1,0,0};publicint[][]floodFill(int[][]image,intsr,intsc,intcolor){intprevimage[sr][sc];if(prevcolor){//如果要修改和修改的一样此时就不需要修改returnimage;}intmimage.length;intnimage[0].length;//存放其下标Queueint[]queuenewLinkedList();queue.add(newint[]{sr,sc});while(!queue.isEmpty()){int[]temqueue.poll();intatem[0];//行intbtem[1];//列//将这个颜色修改image[a][b]color;//看这个位置前后左右位置for(inti0;i4;i){intxadx[i];intybdy[i];if(x0xmy0ynimage[x][y]prev){queue.add(newint[]{x,y});}}}returnimage;}}岛屿数量题目解析此时1表示岛屿并且1的上下左右如果有1的话就会进行延申展开最终求出有多少岛屿BFS遍历整个数组但是此时一个岛屿需要延申到不能延申为止这样才成为一个岛屿此时会出现问题我们会不断扩展后面遍历到这个位置又会让其岛屿数量1此时就重复统计了这里有两种解决方案方案一每次遍历过的位置将这里的 1 修改成 0方案二创建一个同等规模的数组如果统计过了就进行标记一下classSolution{int[]dx{0,0,1,-1};int[]dy{1,-1,0,0};boolean[][]visited;//标记已经遍历过的位置intm0;intn0;publicintnumIslands(char[][]grid){mgrid.length;ngrid[0].length;visitednewboolean[m][n];intret0;for(inti0;im;i){for(intj0;jn;j){//当时1并且没有遍历过结果if(grid[i][j]1visited[i][j]false){ret;dfs(grid,i,j);//将其旁边的visited都标记为遍历过}}}returnret;}publicvoiddfs(char[][]grid,inti,intj){Queueint[]queuenewLinkedList();queue.add(newint[]{i,j});visited[i][j]false;while(!queue.isEmpty()){int[]temqueue.poll();intatem[0];intbtem[1];for(intk0;k4;k){intxadx[k];intybdy[k];if(x0xmy0yngrid[x][y]1!visited[x][y]){queue.add(newint[]{x,y});visited[x][y]true;}}}}}岛屿的最大面积题目解析就是找出岛屿最大面积思想此时和上一题岛屿数量类似此时我们只需要在dfs方法中返回此时岛屿数量即可classSolution{int[]dx{0,0,1,-1};int[]dy{1,-1,0,0};boolean[][]visited;//标记已经遍历过的intm0;intn0;publicintmaxAreaOfIsland(int[][]grid){intret0;mgrid.length;ngrid[0].length;visitednewboolean[m][n];//此时遍历这个岛屿的时候统计一下它的面积返回for(inti0;im;i){for(intj0;jn;j){if(grid[i][j]1visited[i][j]false){//此时更新结果retMath.max(ret,dfs(grid,i,j));}}}returnret;}publicintdfs(int[][]grid,inti,intj){intcount0;//此时岛屿面积Queueint[]queuenewLinkedList();queue.add(newint[]{i,j});visited[i][j]true;count;while(!queue.isEmpty()){//队列为空就结束int[]temqueue.poll();intatem[0];intbtem[1];for(intk0;k4;k){intxadx[k];intybdy[k];//延申if(x0xmy0yngrid[x][y]1visited[x][y]false){queue.add(newint[]{x,y});visited[x][y]true;count;}}}returncount;}}被围住的区域题目解析就是将被X围住的O修改成X,未被围住的不做修改思想由于以前是一边遍历一边修但是这里会出现不需要修改的问题可能修改一半发现不需要修改此时这里还需要进行二次判断因此这里采用正难则反的思想1.先使用dfs遍历边界此时将边界及其扩展部分修改成 其他字符2.最后遍历一遍数组将剩下未被修改的O修改成X将这里被修改成其他字符的修改回以前的O字符classSolution{int[]dx{0,0,1,-1};int[]dy{1,-1,0,0};intm0;intn0;publicvoidsolve(char[][]board){mboard.length;nboard[0].length;//1.将边界的O以及相邻的O全部修改成 . 最后在修改回来//左右两列for(inti0;im;i){if(board[i][0]O){dfs(board,i,0);}if(board[i][n-1]O){dfs(board,i,n-1);}}//上下两行for(inti0;in;i){if(board[0][i]O){dfs(board,0,i);}if(board[m-1][i]O){dfs(board,m-1,i);}}//剩下的O修改成X将上面修改的还原for(inti0;im;i){for(intj0;jn;j){if(board[i][j]O){board[i][j]X;//修改回来}elseif(board[i][j].){board[i][j]O;}}}}publicvoiddfs(char[][]board,inti,intj){Queueint[]queuenewLinkedList();queue.add(newint[]{i,j});board[i][j].;//修改成.while(!queue.isEmpty()){int[]temqueue.poll();intatem[0];intbtem[1];for(intk0;k4;k){intxadx[k];intybdy[k];if(x0xmy0ynboard[x][y]O){queue.add(newint[]{x,y});board[x][y].;}}}}}
企业数字化 ERP 产品动态
相关推荐
数据集特征漂移自适应:基于在线增量主成分分析(Incremental PCA) 数据集特征漂移自适应:基于在线增量主成分分析(Incremental PCA)在面对高维大规模数据流(如亿级在线文本嵌入向量、多模态特征流)时,主成分分析(PCA) 是最经典的高维降维与正交特征提… · 2026/9/27 8:47:19
深入 Chrome Performance 深度分析:消灭主线程长任务与动画掉帧 深入 Chrome Performance 深度分析:消灭主线程长任务与动画掉帧在现代 Web 前端性能调优中,“界面偶发性卡顿与掉帧(Jank & Dropped Frames)”是用户体验最敏感、但也最难以通过常规日志排查的深水区:
用户在输入框… · 2026/9/27 8:47:13
网络营销的主要形式有建设网站避坑指南 3步搞定网络营销建设网站完整流程拒绝拖延 改个需求建站公司拖一周,这大概是每个甲方对接人最崩溃的瞬间。你急得电话打爆,对方却回复“排期满了”或“需要走流程”。别怪你脾气大,是因为你没盯着他们的 完整流程 ,只盯着了结果。很多老板觉得… · 2026/9/27 8:47:13
《创业之路》-965-华夏综合神佛仙圣等级体系 华夏综合神佛仙圣等级体系说明:上古神话、道教、佛教、儒教、《封神演义》、《西游记》分属不同来源,原本不存在统一世界观。下文属于文化整合构建,并非单一原著设定,剔除现代洪荒网文(无创世元灵)。 整体层… · 2026/9/27 9:32:55
一文搞懂专门学设计的网站:3步搞定性能与美观 一文搞懂专门学设计的网站:3步搞定性能与美观 模板网站太丑不够用?很多项目经理在交付时发现,套皮出来的页面像“大众脸”,客户一眼看穿没诚意,验收卡壳、返工频繁。专门学设计的网站,不是堆砌炫酷动效,而是用规范把“好看”变成可复制的工程标准。本… · 2026/9/27 9:32:55
计及需求侧响应日前、日内两阶段鲁棒备用优化附Matlab代码 ✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信🍊个人信条:做科研,… · 2026/9/27 9:32:43
第243篇_民宿短租平台房源与评价采集 【Python爬虫实战】第243篇:房源表和评价表一起拉——民宿短租平台房源信息与用户评价全量抓取实战 所属专栏:【Python爬虫实战】从零到企业级爬虫工程师(CSDN 付费专栏) 本篇篇目:第 243 篇(垂直行业数据采集专题) 难度等级:中级,双表关联采集 阅读时长:约 35 分钟(… · 2026/9/27 9:32:43
rtl_433 JSON 数据输出格式详解:字段规范、单位转换与消息完整性校验 物联网 【免费下载链接】rtl_433 Program to decode radio transmissions from devices on the ISM bands (and other frequencies) 项目地址: https://gitcode.com/gh_mirrors/rt/rtl_433 点击查看 免费下载 导读
rtl_433 是一款用于解码 ISM 频段(以… · 2026/9/27 9:32:42
NodeMCU file_lfs 模块实战:将任意文件嵌入 Lua Flash Store 并透明读写 物联网嵌入式 【免费下载链接】nodemcu-firmware Lua based interactive firmware for ESP8266, ESP8285 and ESP32 项目地址: https://gitcode.com/gh_mirrors/no/nodemcu-firmware 点击查看 免费下载 本指南围绕 NodeMCU 固件仓库中的 file_lfs 模块文档 展开&am… · 2026/9/27 9:32:36
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01