news 2026/6/26 17:33:19

岛屿数量- python-递归-dfs

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
岛屿数量- 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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 17:00:55

JAVA七大设计模式——单例模式

所谓单例模式就是保证程序运行过程中&#xff0c;一个对象最多只有一个实例。具体实现&#xff1a;public class SingletonMode {private static SingletonMode singletonModenull;//私有构造方法&#xff0c;防止外部实例化private SingletonMode(){}/*** Description 获取单例…

作者头像 李华
网站建设 2026/6/26 0:31:24

人机协同智能体的测试指标与评价方法

人机协同智能体的测试指标与评价方法需结合技术性能与业务价值&#xff0c;构建多维度、动态迭代的评估体系。一、核心测试指标任务执行有效性任务成功率&#xff1a;目标达成比例&#xff08;如指令完成率、问题解决率&#xff09;自动化完成率&#xff1a;无需人工干预的任务…

作者头像 李华
网站建设 2026/6/25 2:23:07

构建高效机器学习特征工程系统的终极指南

构建高效机器学习特征工程系统的终极指南 【免费下载链接】featuretools 项目地址: https://gitcode.com/gh_mirrors/fea/featuretools 在当今数据驱动的业务环境中&#xff0c;特征工程已成为机器学习项目成功的关键瓶颈。传统的手工特征开发方式不仅耗时费力&#xf…

作者头像 李华
网站建设 2026/6/25 20:42:47

容智Report Agent智能体驱动财务自动化,从核算迈向价值创造

在金融行业数字化转型深化的背景下&#xff0c;财务数据的实时性与洞察力直接关乎企业决策质量与风险应对能力。然而&#xff0c;对于许多机构而言&#xff0c;由于历史系统架构原因&#xff0c;核心财务数据往往分散在风险、交易、结算等多个独立业务系统中&#xff0c;形成难…

作者头像 李华
网站建设 2026/6/26 1:41:45

命令行数据处理的终极解决方案:5分钟从零到精通

命令行数据处理的终极解决方案&#xff1a;5分钟从零到精通 【免费下载链接】visidata saulpw/visidata: 这是一个用于交互式查看和编辑CSV、JSON、Excel等数据格式的命令行工具。适合用于需要快速查看和编辑数据的场景。特点&#xff1a;易于使用&#xff0c;支持多种数据格式…

作者头像 李华
网站建设 2026/6/25 18:34:41

Excalidraw游戏开发应用:关卡设计草图协作

Excalidraw游戏开发应用&#xff1a;关卡设计草图协作 在一款独立RPG的早期开发阶段&#xff0c;策划小张面对空白文档发愁——如何向程序和美术清晰传达“一个层层递进、充满机关谜题的古老神庙”&#xff1f;他尝试写了一段500字的文字描述&#xff0c;但第二天站会上&#x…

作者头像 李华