力扣200. 岛屿数量(DFS)

Problem: 200. 岛屿数量

文章目录

题目描述

思路及解法

1.遍历矩阵grid的每一个位置;若某个位置为'1'则将用于记录岛屿数量的变量count++,并调用dfs函数;

2.dfs函数实现:

2.1.若当前grid位置为'0'则直接返回;若超出了grid的边界也直接返回;

2.2.若当前位置为'1'则将其变为海水即覆盖为'0',并向其上下左右方向DFS

复杂度

时间复杂度:

O ( M × N ) O(M \times N) O(M×N);其中 M M M和 N N N分别为举证grid的行数与列数

空间复杂度:

O ( M × N ) O(M \times N) O(M×N)

Code

cpp 复制代码
class Solution {
public:
    /**
     * Use DFS to get the maximum number of islands
     *
     * @param grid Island array
     * @return int
     */
    int numIslands(vector<vector<char>>& grid) {
        int count = 0;
        int m = grid.size();
        int n = grid[0].size();
        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;
    }

    /**
     * DFS implementation function
     *
     * @param grid Island array
     * @param i Index subscript
     * @param j Index subscript
     */
    void dfs(vector<vector<char>>& grid, int i, int j) {
        int m = grid.size();
        int n = grid[0].size();
        // out of index
        if (i < 0 || j < 0 || i >= m || j >= n) {
            return;
        }
        // It's already sea water
        if (grid[i][j] == '0') {
            return;
        }
        // Turn grid[i][j] into seawater
        grid[i][j] = '0';
        // Flood the land up and down
        dfs(grid, i + 1, j);
        dfs(grid, i, j + 1);
        dfs(grid, i - 1, j);
        dfs(grid, i, j - 1);
    }
};
相关推荐
立志成为大牛的小牛8 分钟前
数据结构——四十、折半查找(王道408)
数据结构·学习·程序人生·考研·算法
孙同学_18 分钟前
面试题 16.25. LRU 缓存
leetcode·缓存
王哈哈^_^22 分钟前
【完整源码+数据集】蓝莓数据集,yolo11蓝莓成熟度检测数据集 3023 张,蓝莓成熟度数据集,目标检测蓝莓识别算法系统实战教程
人工智能·算法·yolo·目标检测·计算机视觉·ai·视觉检测
王哈哈^_^35 分钟前
【完整源码+数据集】高空作业数据集,yolo高空作业检测数据集 2076 张,人员高空作业数据集,目标检测高空作业识别系统实战教程
人工智能·算法·yolo·目标检测·计算机视觉·目标跟踪·视觉检测
一条数据库41 分钟前
猫狗识别数据集:34,441张高质量标注图像,深度学习二分类任务训练数据集,计算机视觉算法研发,CNN模型训练,图像识别分类,机器学习实践项目完整数据资
深度学习·算法·机器学习
bloxd yzh1 小时前
图论基础概念
算法
小白程序员成长日记1 小时前
2025.11.09 力扣每日一题
算法·leetcode·职场和发展
hansang_IR1 小时前
【题解】洛谷 P1477 [NOI2008] 假面舞会 [思维 + 图论]
c++·算法·图论·思维
天选之女wow1 小时前
【代码随想录算法训练营——Day59】图论——47.参加科学大会、94.城市间货物运输I
算法·图论
CoovallyAIHub1 小时前
1.2MB超轻量模型实现草莓苗精准分级检测与定位,准确率超96%
深度学习·算法·计算机视觉