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

【c++刷题】leetcode 200. 岛屿数量

思路

深度优先搜索是一种递归的搜索算法,其核心思想是从一个节点开始,沿着一条路径尽可能深地探索下去,直到无法继续,然后回溯到上一个节点,继续探索其他路径。在本题中,我们可以将二维网格中的每一个 ‘1’(陆地)看作一个节点,通过 DFS 算法将与该节点相连的所有陆地都标记为已访问,这样就可以将一个岛屿整体处理。通过遍历整个二维网格,每当遇到一个未被访问的陆地时,就进行一次 DFS 搜索,每进行一次 DFS 搜索就意味着发现了一个新的岛屿,最终统计 DFS 搜索的次数即可得到岛屿的数量。

解答

class Solution {
public:
    int rows;
    int cols;

    void dfs(vector<vector<char>>& grid, int i, int j)
    {
       // cout << "i="<<i<<", rows="<<this->rows<<", j="<<j<<", cols="<<this->cols<<endl;
        if (i<0 || i>=this->rows || j<0 || j>=this->cols) return;
        if (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);
    }

    int numIslands(vector<vector<char>>& grid) {
        int ans = 0;

        this->rows = grid.size();
        this->cols = grid[0].size();

        for (int i=0; i<rows; ++i)
        {
            for (int j=0; j<cols; ++j)
            {
                if (grid[i][j] == '1')
                {
                    dfs(grid, i, j);
                    ans +=1;
                }                
            }
        }
        return ans;
    }
};

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

相关文章:

  • zyNo.23
  • STM32自学记录(九)
  • USB Flash闪存驱动器安全分析(第一部分)
  • 广东茂名能源国际会议(IS-ESE 2025)
  • Kafka分区管理大师指南:扩容、均衡、迁移与限流全解析
  • Git -> Git配置密钥对,并查看公钥
  • 企业要把DeepSeek部署到本地吗?
  • 汽车油箱行业分析
  • DeepSeek 本地化部署
  • 【愚公系列】《Python网络爬虫从入门到精通》008-正则表达式基础
  • Linux笔记:Vim编辑器基本操作笔记
  • AI如何与DevOps集成,提升软件质量效能
  • Codeforces1637E Best Pair
  • 【C语言 】C语言 桌游开发数字竞拍(源码)【独一无二】
  • 探索 Text-to-SQL 技术:从自然语言到数据库查询的桥梁
  • 后勤数据源定制主控室
  • 【数据可视化-17】基于pyecharts的印度犯罪数据可视化分析
  • 相机与激光雷达联合标定综述
  • ASP.NET Core 面试宝典【刷题系列】
  • QT之error: LNK2038: 检测到“RuntimeLibrary”的不匹配项
  • 详解C++的存储区
  • 红队视角出发的k8s敏感信息收集——持久化存储与数据泄露
  • Debezium日常分享系列之:解码逻辑解码消息内容
  • 李宏毅机器学习笔记:【5.Batch和Momentum的训练技巧】
  • 【踩坑】pytorch模型导出部署onnx问题记录
  • 登录弹窗效果