LC 速查

HOT 100索引 › B9 图论 Graph

LC 200岛屿数量Number of Islands 中等

grid 是 '1'(陆地)/'0'(水) 的二维网格,统计陆地组成的岛屿数量(四方向相连算一块)。

思路 遍历网格,遇到 '1' 计数 +1 并 DFS/BFS 把整块淹成 '0'。

class Solution:
    def numIslands(self, grid: List[List[str]]) -> int:
        m, n = len(grid), len(grid[0])

        def dfs(i, j):
            if not 0 <= i < m or not 0 <= j < n:
                return
            if grid[i][j] != '1':
                return
            grid[i][j] = '0'
            dfs(i + 1, j); dfs(i - 1, j)
            dfs(i, j + 1); dfs(i, j - 1)

        ans = 0
        for i in range(m):
            for j in range(n):
                if grid[i][j] == '1':
                    ans += 1
                    dfs(i, j)
        return ans
← 上一题 二叉树中的最大路径和腐烂的橘子 下一题 →