当前位置: 首页 > news >正文

LeetCode:深度优先搜索DFS

200.岛屿数量

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

示例 1:

输入:grid = [
[‘1’,‘1’,‘1’,‘1’,‘0’],
[‘1’,‘1’,‘0’,‘1’,‘0’],
[‘1’,‘1’,‘0’,‘0’,‘0’],
[‘0’,‘0’,‘0’,‘0’,‘0’]
]
输出:1

【思路】
递归思想;

  1. 先遍历网格,若元素为’1’则可以以此点展开dfs操作;
  2. dfs操作:深度优先搜索过程中将搜索到的’1’都写为‘0’;
  3. 这样!岛屿的数量其实就是遍历过程中找到’1’的次数!
classSolution{public:voiddfs(vector<vector<char>>&grid,intr,intc){intnr=grid.size();intnc=grid[0].size();if(grid[r][c]=='0')return;grid[r][c]='0';if(r+1<nr&&grid[r+1][c]=='1')dfs(grid,r+1,c);if(r-1>=0&&grid[r-1][c]=='1')dfs(grid,r-1,c);if(c+1<nc&&grid[r][c+1]=='1')dfs(grid,r,c+1);if(c-1>=0&&grid[r][c-1]=='1')dfs(grid,r,c-1);}intnumIslands(vector<vector<char>>&grid){intnr=grid.size();if(!nr)return0;intnc=grid[0].size();intnum_islands=0;for(intr=0;r<nr;r++){for(intc=0;c<nc;c++){if(grid[r][c]=='1'){num_islands++;dfs(grid,r,c);}}}returnnum_islands;}};

695.岛屿的最大面积

与上同理

classSolution{public:intdfs(vector<vector<int>>&grid,intr,intc){intnr=grid.size();intnc=grid[0].size();if(grid[r][c]==0)return0;intsum=grid[r][c];grid[r][c]=0;//记得置0!不然会stack-overflow!if(r+1<nr&&grid[r+1][c]==1)sum+=dfs(grid,r+1,c);if(r-1>=0&&grid[r-1][c]==1)sum+=dfs(grid,r-1,c);if(c+1<nc&&grid[r][c+1]==1)sum+=dfs(grid,r,c+1);if(c-1>=0&&grid[r][c-1]==1)sum+=dfs(grid,r,c-1);returnsum;}intmaxAreaOfIsland(vector<vector<int>>&grid){intnr=grid.size();if(!nr)return0;intnc=grid[0].size();intres=0;for(intr=0;r<nr;r++){for(intc=0;c<nc;c++){if(grid[r][c]==1){res=max(dfs(grid,r,c),res);}}}returnres;}};
http://www.cnnetsun.cn/news/3300843.html

相关文章:

  • PLC-IoT 技术解析:基于 IEEE 1901.1 协议实现 99.999% 可靠性的 3 大关键
  • Kimi K2.5+Claude Code双AI协同开发实战:重构支付对账服务
  • 工业负载控制:TPD2017FN与PIC18F4680实战解析
  • Windows 进程令牌窃取实战:从 lsass.exe 获取 System 权限运行记事本(附 C++ 源码)
  • Win10黑屏重启0xc000009c错误:DISM/SFC卡死全面解决方案
  • Postman 桌面版 v11 安装路径自定义与 3 种数据同步策略详解
  • Elasticsearch-head 5.0.0 跨域连接失败排查:3种配置场景与解决方案
  • Unity集成ProtoBuf 3.5避坑指南:解决7大编译错误与IL2CPP兼容性问题
  • 【ChatGPT创意写作提示词黄金法则】:20年内容架构师亲授17个经实测提升300%生成质量的Prompt结构模板
  • TranslucentTB依赖库终极解决方案:从源码到部署的完整指南
  • Android手机直连Switch:3步完成游戏传输的终极指南
  • 华为Auth-HTTP Server 1.0 漏洞检测:3步编写Nuclei POC,精准识别高危风险
  • 实时代码审查响应<800ms:DeepSeek在CI/CD流水线中的嵌入式集成方案(含Jenkins+GitHub Actions模板)
  • WinMTR 与原生 tracert/ping 对比评测:3个维度实测诊断效率与精度差异
  • 制造企业数字化系统平台底座二次开发解决方案与推广白皮书
  • 1987年5月24日下午15-17点出生性格、运势和命运
  • 特洛伊木马病毒 2024-2026:从 Zeus 到 Sunburst 的 5 大攻击家族演变与防御策略
  • ChatGPT写K8s YAML配置失效真相(YAML缩进陷阱与锚点引用黑洞)
  • 3分钟掌握PingFangSC:苹果官方中文字体让你的设计瞬间专业
  • 红日靶场VulnStack 1 环境搭建:3台靶机+1台Kali的VMware网络拓扑与避坑指南
  • LabVIEW TDMS 文件高级应用:3步实现高速流盘与Excel数据交换
  • PyNVMe3 22.11 在 Ubuntu 20.04 部署实战:3步配置大页内存,规避常见安装失败
  • Unity粒子系统力场实战:用Force Field打造逼真动态火焰特效
  • ChatGPT内容日历构建全链路(含爆款选题库+发布时间算法+平台敏感词自动过滤)——仅限前500名领取2024Q3热点日历Excel
  • Dr.Memory vs. Visual Studio 诊断工具:5类内存错误检测能力横向评测
  • 想找靠谱外贸工艺品设计平台推荐榜单?这里有答案!
  • 【Bug已解决】openclaw environment variable conflict / Config override issue — OpenClaw 环境变量冲突解决方案
  • 【Bug已解决】openclaw file watcher ENOSPC inotify limit exceeded — OpenClaw 文件监听器崩溃解决方案
  • 【共创季稿事节】跨屏演讲台实战:一个 HarmonyOS6.1 跨设备协同应用的完整开发复盘
  • AI 率一直降不下来怎么办?换个方法从 70% 降到 12%