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

【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.dtcms.com/a/17785.html

相关文章:

  • 生物发酵展与2025生物医药创新技术与应用发展论坛同期盛大举办
  • DeepSeek教unity------UI框架
  • 基于51单片机的4位电子密码锁proteus仿真
  • Ubuntu下载安装Docker-Desktop
  • latex二重闭合积分显示
  • UI-设计规范大小总结
  • 深度学习|表示学习|归一化和正则化带给我们的启示|27
  • 基于 openEuler 构建 LVS-NAT 集群和ldirectord监控RS
  • WPF的MVVMLight框架
  • 整理及仿真Xilinx的SRIO示例工程(高速收发器三十)
  • MapReduce简单应用(三)——高级WordCount
  • Datawhale Ollama教程笔记3
  • excel中单元格字符串提取数字累加
  • Linux部署DeepSeek r1 模型训练
  • Python+appium实现自动化测试
  • Netty的线程模型详解
  • ollama+langchain+deepseek本机跑通大模型
  • spring 学习(spring-Dl补充(注入不同类型的数据))
  • 搭建本地模型,实现聊天机器人
  • 二级C语言题解:函数指针的操作、单链表偶数结点值累加、判断回文
  • 2025年——【寒假】自学黑客计划(网络安全)
  • 达梦:TPCC 压测
  • 解决Did not find dashscope_api_key问题——jupyter设置环境变量
  • 初学总结SpringBoot项目在mac上环境搭建和运行
  • 教育小程序+AI出题:如何通过自然语言处理技术提升题目质量
  • [npm install 报错] Verion 9 of Highlight.js has reached EOL
  • ESP32 WIFI
  • 封装一个sqlite3动态库
  • C#两个集合多属性组合关联得到新的组合
  • 机器学习算法 - 随机森林之决策树初探(1)