📅  最后修改于: 2023-12-03 15:40:23.820000             🧑  作者: Mango
在计算机领域中,一个岛屿可以被定义为由相邻陆地组成的区域。给定一个由0和1组成的二维地图,在地图中1表示陆地,0表示水;连通的陆地区域可以形成一个岛屿。求岛屿的数量。
本文将介绍如何使用深度优先搜索(DFS)算法来解决该问题。DFS是一种用来遍历或搜索树或图的算法,其基本思路是从根节点开始,尽可能深地遍历每个节点的分支,直到到达不能遍历的最深层,然后返回回溯到该节点的上一个节点,继续遍历其他节点。
以下是使用DFS算法来查找岛屿数量的示例代码:
def dfs(grid, i, j):
row, col = len(grid), len(grid[0])
if i < 0 or i >= row or j < 0 or j >= col or grid[i][j] == "0":
return
grid[i][j] = "0"
dfs(grid, i+1, j)
dfs(grid, i-1, j)
dfs(grid, i, j+1)
dfs(grid, i, j-1)
def numIslands(grid):
if not grid:
return 0
row, col = len(grid), len(grid[0])
count = 0
for i in range(row):
for j in range(col):
if grid[i][j] == "1":
count += 1
dfs(grid, i, j)
return count
时间复杂度:O(MN),其中M和N分别为地图的行数和列数。最坏情况下,需要遍历整个地图。
空间复杂度:O(MN),最坏情况下,深度优先搜索将访问整个地图。