当前位置: 首页 > 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;
    }
};

相关文章:

  • 生物发酵展与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语言题解:函数指针的操作、单链表偶数结点值累加、判断回文
  • 央行:货币与物价的关系受多重因素影响,提振物价的关键在于扩大有效需求
  • 央行谈MLF:逐步退出政策利率属性回归流动性投放工具
  • 美英达成贸易协议,美股集体收涨
  • 上海加力提速推进优化营商环境,明确“十大攻坚突破任务”
  • A股26家游戏企业去年营收近1900亿元:过半净利下滑,出海成为主流选择
  • 4月深圳新房、二手房成交同比均上涨,“5月有望延续积极向好的发展态势”