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

岛屿数量- python-递归-dfs

题目:

思路:

  1. 逐个检查网格的每个坐标(i,j)
    1. 若当前位置是未访问的陆地(grid[i][j] == '1'),说明找到一个新岛屿 → 计数ans += 1
    2. 立即启动 DFS,把这个岛屿的所有连通陆地标记为 “已访问”,避免后续重复计数。
  2. 递归终止条件:若当前坐标(i,j)满足以下任一条件,直接返回
    1. 行 / 列越界(i < 0 或 i >= m 或 j < 0 或 j >= n);
    2. 不是未访问的陆地(grid[i][j] != '1',可能是海洋 '0' 或已访问的陆地 '2')。
  3. 标记已访问:将当前陆地grid[i][j]改为非 '1' 的值(如 '2'),避免重复递归、无限循环。
  4. 递归遍历四邻域:依次向「上、下、左、右」四个方向递归调用 DFS,直到整个岛屿的所有陆地都被标记。
  5. 每完成一次 DFS(递归遍历完一个岛屿的所有陆地),就代表找到一个独立岛屿,最终ans即为岛屿总数。

代码:

class Solution: def numIslands(self, grid: List[List[str]]) -> int: m,n = len(grid),len(grid[0]) def dfs(i,j): if i<0 or i>=m or j<0 or j>=n or grid[i][j]!='1': return if grid[i][j] == '1': #出界,或者不是 '1',就不再往下递归 grid[i][j] = '2' # 标记!避免来回横跳无限递归 dfs(i,j+1) dfs(i,j-1) dfs(i-1,j) dfs(i+1,j) ans = 0 for i,row in enumerate(grid): for j,col in enumerate(row): if col == '1': # 找到了一个新的岛 dfs(i,j) # 把这个岛标记,这样后面遍历到的 '1' 一定是新的岛 ans += 1 return ans
http://www.cnnetsun.cn/news/82692.html

相关文章:

  • 上海、北京、深圳跻身全球GDP前十城市;奥动新能源向港交所递交上市申请 | 美通社一周热点简体中文稿
  • 前端工程化实践:打包工具的选择与思考
  • Flutter跨平台打包实战:从配置冲突到一键部署的完整解决方案
  • LangChain表达式语言(LCEL)如何扩展Anything-LLM功能?
  • 33、Unix系统下SMB/CIFS文件共享访问指南
  • GESP认证C++编程真题解析 | B3863 [GESP202309 一级] 买文具
  • 9 个专科生开题报告工具,AI降重查重率推荐
  • 39、Samba故障排除指南
  • 【软考架构】滑动窗口限流算法的原理是什么?
  • FlutterToast跨平台通知组件终极指南:从零到专家级定制
  • CasperJS API测试终极指南:构建高效的数据一致性验证体系
  • uniapp+springboot基于微信小程序的学生宿舍报修系统的设计与实现_a1o96z7c
  • 知识产权企业选择CRM系统时,最应关注的核心功能是什么?
  • HyperDX ClickHouse物化视图:构建实时数据分析的终极加速引擎
  • Windows Server 2022官方镜像完整获取指南:从下载到验证的全流程
  • AndroidGen-GLM-4-9B:开启移动智能体新时代的革命性突破
  • 微服务架构下的分布式数据加密:SQLCipher实战指南
  • 国产开源,含20+视频AI算法模型,兼容GB28181、ONVIF、RTMP协议、私有化部署,10天搞定IoT物联网项目交付
  • 16、搭建 Asterisk VoIP 服务器全攻略
  • Apache Mesos集群运维实战:故障恢复与版本管理完全指南
  • 探索式测试的Session管理法:提升软件测试效率与可追溯性
  • 购物省钱参考:爱创猫电商优惠券领取方式
  • 12、Red Hat Enterprise Linux硬件分析与管理指南
  • 35、Linux 内核监控与调试:NUMA、AltSysRq 及 Kdump 全解析
  • DataEase开源BI工具完整指南:从零开始的数据可视化之旅
  • Gutenberg性能优化终极指南:零成本加速WordPress编辑器
  • ag-ui与LangGraph集成终极指南:构建企业级AI工作流的完整教程
  • 2026毕设ssm+vue基于架构的校园二手物品交易论文+程序
  • 手机强制开启USB调试模式终极指南:轻松解决设备连接难题
  • DataEase开源BI工具完整安装配置指南:从零开始快速部署