力扣热门100题之岛屿的数量(DFS/BFS经典题)

核心思路:

遍历每一个格子,遇到陆地就把它所在的整座岛全部淹掉(标记为 0),岛屿数量 +1

通俗解释

  1. 逐个格子扫一遍
  2. 碰到 1 说明发现一座新岛count++
  3. 立刻用 DFS 把这座岛所有相连的 1 都改成 0(相当于淹掉)
  4. 继续扫,直到结束

这样每座岛只会被计数一次

完整代码实现:

java 复制代码
class Solution {
    public int numIslands(char[][] grid) {
        if(grid == null || grid.length == 0) return 0;

        int count = 0;
        int m = grid.length;
        int n = grid[0].length;

        for(int i = 0;i<m;i++){
            for(int j = 0;j<n;j++){
                // 找到一块陆地
                if(grid[i][j] == '1'){
                    count++;
                    // 把这座岛全部淹掉
                    dfs(grid,i,j);
                }
            }
        }
        return count;
    }

    public void dfs(char[][] grid,int i,int j){
        int m = grid.length;
        int n = grid[0].length;

        // 越界 或者 是水,直接返回
        if (i < 0 || i >= m || j < 0 || j >= n || 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);
    }
}
相关推荐
zyq99101_13 小时前
DFS算法实战:经典例题代码解析
python·算法·蓝桥杯·深度优先
qinian_ztc3 小时前
frida 14.2.18 安装报错解决
算法·leetcode·职场和发展
田梓燊4 小时前
2026/4/11 leetcode 3741
数据结构·算法·leetcode
小肝一下6 小时前
每日两道力扣,day8
c++·算法·leetcode·哈希算法·hot100
语戚8 小时前
力扣 51. N 皇后:基础回溯、布尔数组优化、位运算全解(Java 实现)
java·算法·leetcode·力扣·剪枝·回溯·位运算
py有趣8 小时前
力扣热门100题之螺旋矩阵
算法·leetcode
人道领域9 小时前
【LeetCode刷题日记】383 赎金信
算法·leetcode·职场和发展
旖-旎9 小时前
哈希表(存在重复元素)(3)
数据结构·c++·学习·算法·leetcode·散列表
Tisfy9 小时前
LeetCode 3740.三个相等元素之间的最小距离 I:今日先暴力,“明日“再哈希
算法·leetcode·哈希算法·题解·模拟·遍历·暴力