00:00 / 06:27
连播
清屏
智能
倍速
点赞88
00:00 / 03:06
连播
清屏
智能
倍速
点赞4225
Asthenian8月前
[算法学习Day377]岛屿数量-DFS 需求分析: 题目要求计算二维网格 grid 中的岛屿数量。网格的每个元素可以是 '1'(表示陆地)或者 '0'(表示水域)。岛屿是由陆地('1')相连的区域构成,岛屿的相邻陆地可以是上下左右四个方向相连。 给定一个网格,要求返回岛屿的数量。 算法选型: 该问题适合使用 深度优先搜索(DFS) 来解决。DFS 可以有效地从一个陆地块('1')开始遍历,标记所有连通的陆地(将其值变为 '0'),从而避免重复计数同一个岛屿。通过这种方式,岛屿的数量即为 DFS 被触发的次数。 逻辑实现: 初始化:首先获取网格的尺寸 m 和 n,并初始化计数器 count 为 0。 遍历网格:通过两层嵌套循环遍历整个 grid,检查每个位置的值。如果该位置是 '1',则表示找到一个新的岛屿的起点。 DFS遍历:从当前的 '1' 出发,调用 DFS 函数进行深度遍历,DFS 会标记与当前陆地相连的所有陆地(通过将其值设为 '0'),确保同一个岛屿只被计数一次。 岛屿计数:每当在网格中遇到一个新的岛屿('1'),就触发一次 DFS 操作并将岛屿数量 count 增加 1。 返回结果:遍历完成后,返回岛屿数量 count。 此算法的时间复杂度为 O(m * n),其中 m 和 n 分别是网格的行数和列数。空间复杂度为 O(m * n)(递归调用栈的深度)。 #计算机 #算法 #面试 #秋招 #Java
00:00 / 09:00
连播
清屏
智能
倍速
点赞14
00:00 / 03:43
连播
清屏
智能
倍速
点赞28
00:00 / 06:16
连播
清屏
智能
倍速
点赞11