1905. 统计子岛屿数量
💡
原文英文,约700词,阅读约需3分钟。
📝
内容提要
给定两个二进制矩阵grid1和grid2,表示陆地和水域,判断grid2中的岛屿是否是grid1中岛屿的子岛屿。使用DFS遍历grid2中的岛屿,检查对应的grid1中的岛屿是否都是陆地。返回满足子岛屿条件的岛屿数量。
🎯
关键要点
- 给定两个二进制矩阵grid1和grid2,表示陆地和水域。
- 岛屿是连接的1的组,任何超出矩阵的单元格被视为水域。
- grid2中的岛屿被视为子岛屿,如果grid1中有一个岛屿包含grid2中该岛屿的所有单元格。
- 返回grid2中被视为子岛屿的岛屿数量。
- 使用深度优先搜索(DFS)遍历grid2中的岛屿,检查对应的grid1中的岛屿是否都是陆地。
- 遍历grid2中的每个单元格,识别岛屿并进行DFS探索。
- 在DFS过程中检查grid1中对应的单元格是否都是陆地,如果是,则该岛屿为子岛屿。
- 每找到一个满足子岛屿条件的岛屿,计数加一。
- 时间复杂度为O(m × n),其中m为行数,n为列数。
❓
延伸问答
如何判断grid2中的岛屿是否是grid1中的子岛屿?
通过深度优先搜索(DFS)遍历grid2中的岛屿,检查对应的grid1中的单元格是否都是陆地。只有当grid1中包含grid2岛屿的所有单元格时,grid2的岛屿才被视为子岛屿。
在这个算法中,时间复杂度是多少?
时间复杂度为O(m × n),其中m为行数,n为列数。
如何实现对grid2的遍历以识别岛屿?
遍历grid2中的每个单元格,当遇到陆地单元格(1)时,使用DFS探索整个岛屿。
什么是子岛屿?
子岛屿是指grid2中的岛屿,如果grid1中有一个岛屿包含grid2中该岛屿的所有单元格,则该岛屿被视为子岛屿。
DFS在这个算法中是如何使用的?
DFS用于探索grid2中的岛屿,并在探索过程中检查对应的grid1中的单元格是否都是陆地。
如何计算grid2中满足子岛屿条件的岛屿数量?
每找到一个满足子岛屿条件的岛屿,就将计数加一,最终返回计数结果。
➡️