news 2026/2/8 7:59:16

岛屿数量- 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/2/2 6:53:01

Moovie.js:打造极致体验的纯JavaScript视频播放器

Moovie.js&#xff1a;打造极致体验的纯JavaScript视频播放器 【免费下载链接】moovie.js Movie focused HTML5 Player 项目地址: https://gitcode.com/gh_mirrors/mo/moovie.js 在当今视频内容爆炸的时代&#xff0c;一个优秀的视频播放器对于网站体验至关重要。Moovie…

作者头像 李华
网站建设 2026/2/3 14:28:11

40、Samba使用指南:额外资源、守护进程及客户端程序详解

Samba使用指南:额外资源、守护进程及客户端程序详解 在使用Samba的过程中,我们可能会遇到各种问题,也需要不断获取最新的信息和帮助。下面将详细介绍Samba的额外资源、守护进程以及客户端程序等方面的内容。 1. 额外资源 在使用Samba时,我们可以通过多种在线资源获取新闻…

作者头像 李华
网站建设 2026/2/7 17:05:29

械字号膏药代加工优选伙伴:天津市晨洁华美科技发展有限公司

大健康产业规范化发展进程中&#xff0c;械字号膏药凭借合规性强、消费者接受度高的特点&#xff0c;成为不少健康品牌、医药企业布局的重要方向。而械字号膏药代加工服务&#xff0c;也为这类企业降低研发与生产门槛、快速切入市场提供了便捷路径。在筛选合作厂家时&#xff0…

作者头像 李华
网站建设 2026/2/6 4:55:34

7、Unix系统上Samba安装与配置全攻略

Unix系统上Samba安装与配置全攻略 1. 基本Samba配置文件 在启动Samba之前,需要为其创建一个配置文件。Samba配置的关键在于其配置文件 smb.conf ,该文件可简单可复杂。为了测试服务器软件,可使用以下文件,在所选文本编辑器中创建,命名为 smb.conf ,并放置在 /usr/…

作者头像 李华
网站建设 2026/2/6 20:03:10

Dify平台支持Prompt工程的调试技巧与最佳实践

Dify平台支持Prompt工程的调试技巧与最佳实践 在企业加速拥抱生成式AI的今天&#xff0c;如何高效构建稳定、可控且可维护的AI应用&#xff0c;已成为技术团队的核心挑战。尤其是在处理复杂任务如智能客服、知识问答或自动化流程时&#xff0c;仅靠调用大模型API远远不够——提…

作者头像 李华