当前位置: 首页 > article >正文

力扣 岛屿数量

从某个点找,不断找相邻位置。

题目

岛屿中被“0”隔开后 ,是每一小块状的“1”,本题在问有多少块。可以用dfs进行搜索,遍历每一个点,把每一个点的上下左右做搜索检测,当检测到就标记为“0”表示已访问过,直到搜不到“1”,然后搜索完后数量加一即找到一块了。这样的方式看起来像是一种连线的方式,一般遍历会从第一个点开始找,然后找临近点,找到有就连起来一块。然后数一下有几块,就是有几个网格中的岛屿了。

时间复杂度:O(MN),空间复杂度:O(MN)。

class Solution {
    void dfs(char[][] grid, int r, int c) {
        int nr = grid.length;
        int nc = grid[0].length;

        if (r < 0 || c < 0 || r >= nr || c >= nc || grid[r][c] == '0') {
            return;
        }

        grid[r][c] = '0';
        dfs(grid, r - 1, c);
        dfs(grid, r + 1, c);
        dfs(grid, r, c - 1);
        dfs(grid, r, c + 1);
    }

    public int numIslands(char[][] grid) {
        if (grid == null || grid.length == 0) {
            return 0;
        }

        int nr = grid.length;
        int nc = grid[0].length;
        int num_islands = 0;
        for (int r = 0; r < nr; ++r) {
            for (int c = 0; c < nc; ++c) {
                if (grid[r][c] == '1') {
                    ++num_islands;
                    dfs(grid, r, c);
                }
            }
        }

        return num_islands;
    }
}


http://www.kler.cn/a/501475.html

相关文章:

  • 回归预测 | MATLAB实RVM-Adaboost相关向量机集成学习多输入单输出回归预测
  • WPF中如何在MVVM模式下跨线程更新UI
  • 探索网络安全:浅析文件上传漏洞
  • 三 BH1750 光感驱动调试1
  • 【STM32+QT项目】基于STM32与QT的智慧粮仓环境监测与管理系统设计(完整工程资料源码)
  • 学习模板之一
  • 在线游戏靶场【overthewire.org】之linux基础练兵场
  • Github 2025-01-09 Go开源项目日报 Top10
  • docker--小白--导入timescaledb
  • 使用 WPF 和 C# 绘制图形
  • 稀疏编码 (Sparse Coding) 算法详解与PyTorch实现
  • linux:文件的创建/删除/复制/移动/查看/查找/权限/类型/压缩/打包
  • Android RIL(Radio Interface Layer)全面概述和知识要点(3万字长文)
  • webpack常见优化方法
  • 2024信息安全网络安全等安全意识(附培训PPT下载)
  • Go语言开发高效的RPC服务的方法
  • 基于nginx实现正向代理(linux版本)
  • C#/.NET/.NET Core技术前沿周刊 | 第 20 期(2025年1.1-1.5)
  • 2.Numpy练习(1)
  • web-前端小实验6
  • 完全自定义Qt翻译功能,不使用Qt Linguist的.ts 和 .qm类型翻译
  • Flask-SQLAlchemy 基础用法
  • 如何使用CSS让页面文本两行显示,超出省略号表示
  • 【k8s】scc权限 restricted、anyuid、privileged
  • 微软发布AIOpsLab:一个开源的全面AI框架,用于AIOps代理
  • 【Linux系列】Curl 参数详解与实践应用