ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

5.4——200:岛屿问题

2020-05-24 18:57:12  阅读:180  来源: 互联网

标签:1ises 200 结点 遍历 5.4 ++ 岛屿 DFS


200:岛屿问题 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。     一、解题思路——把一块“区域”看作是一个图,图的个数即是岛屿的个数。难点在于如何把区域内的所有结点都找到,对于这道题用DFS和BFS均可 1.对图进行深度优先遍历(上下左右四个方向为子结点)。当结点不是1(0(海)或者是 已读)的时候,认为这条支路已经到底了,返回到上一层继续深度优先遍历 2.每次遍历都会将当前结点标记为已访问(确保它的子结点不会把它本身当作父结点) 3.遍历完成后,返回。开始下一个结点的遍历。直到遍历完所有可遍历结点   二、源码 class Solution: def numlslands(self, gr 、 id: List[List[str 、 ]]) def DFS(1ises, x, y): # 坐 标 合 法 且 是 未 访 间 过 的 if 9 < : x < len(lises) and 9 < : y 〈 一 > Int len(lises[x]) and lises x ' f # 标 记 为 已 访 间 过 , 不 会 重 复 访 间 囗 重 , 返 回 lises[x][y] x 1 丿 y) # 上 DFS(1ises, 妇 果 甬 以 访 问 的 标 讠 己 会 将 某 一 结 点 的 有 符 x + 的 y) # 下 DFS(1ises, , x, y 1 ) # 左 DFS 的 结 点 标 记 为 已 访 问 。 在 下 一 次 历 的 时 候 会 跳 DFS(1ises , x, y + 1 ) # 右 过 已 访 问 点 DFS(1ises 跳 出 这 次 诬 归 ” 说 明 本 次 D 巧 扌 叟 索 到 底 了 r 、 eturn # 泫 样 循 环 次 数 为 " 区 的 个 而 不 是 有 " 岛 结 点 " 的 个 数 9 for 、 in range(len(gr 、 id)): fo ' 、 j in range(len(grid[i])) : if g r 谰 巨 ] [ j ] DFS(grid, i, 0 ) 1 、 n    

标签:1ises,200,结点,遍历,5.4,++,岛屿,DFS
来源: https://www.cnblogs.com/xiaoqichaoren/p/12951851.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有