news 2026/4/18 3:49:33

岛屿数量- 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/4/18 3:47:27

解锁本地AI新纪元:向量数据库如何重塑企业智能工作流

解锁本地AI新纪元&#xff1a;向量数据库如何重塑企业智能工作流 【免费下载链接】self-hosted-ai-starter-kit The Self-hosted AI Starter Kit is an open-source template that quickly sets up a local AI environment. Curated by n8n, it provides essential tools for c…

作者头像 李华
网站建设 2026/4/18 3:47:55

基于PaddlePaddle的中文文本分类项目实战(附Git Commit规范)

基于PaddlePaddle的中文文本分类项目实战 在当今信息爆炸的时代&#xff0c;每天产生的中文文本数据量以亿计——从社交媒体评论、电商用户反馈到客服对话记录。如何从中快速提取有价值的信息&#xff1f;文本分类技术正成为企业智能化运营的核心引擎。而在众多深度学习框架中&…

作者头像 李华
网站建设 2026/4/16 3:11:45

测试检查表的创建与维护专业指南

1 检查表的核心价值与创建基础 1.1 检查表在测试流程中的战略意义 缺陷预防&#xff1a;通过结构化条目覆盖常见错误高发区域 效率提升&#xff1a;减少重复性思维消耗&#xff0c;将精力聚焦于复杂场景测试 知识沉淀&#xff1a;将个人测试经验转化为团队共享的质量资产 …

作者头像 李华
网站建设 2026/4/2 22:25:38

Linux内核实时调度深度解析:从原理到性能优化实战

Linux内核实时调度深度解析&#xff1a;从原理到性能优化实战 【免费下载链接】linux-insides-zh Linux 内核揭秘 项目地址: https://gitcode.com/gh_mirrors/li/linux-insides-zh 在嵌入式系统、工业自动化等高实时性要求场景中&#xff0c;任务响应时间的确定性直接决…

作者头像 李华
网站建设 2026/4/13 17:17:00

38、Samba服务故障排查指南

Samba服务故障排查指南 1. 常见错误提示及解决方法 在使用Samba服务时,可能会遇到一些常见的错误提示,以下是这些错误的详细信息及解决建议: | 错误提示 | 可能原因 | 解决方法 | | — | — | — | | name is flagged unavailable | 使用了 available = no 选项 | …

作者头像 李华