力扣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

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);
    }
};

相关推荐

  1. 200. 岛屿数量

    2024-03-22 07:38:03       37 阅读
  2. 200. 岛屿数量(Python3)

    2024-03-22 07:38:03       42 阅读
  3. 200. 岛屿数量

    2024-03-22 07:38:03       33 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-22 07:38:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-22 07:38:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-22 07:38:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-22 07:38:03       20 阅读

热门阅读

  1. 关于Windows 10 LTSC 2019无法安装Edge的解决方案

    2024-03-22 07:38:03       34 阅读
  2. macOS 合并同名文件夹 按住 Option 键

    2024-03-22 07:38:03       18 阅读
  3. React核心⼊⻔-lesson1

    2024-03-22 07:38:03       18 阅读
  4. 2024.3.21 ARM

    2024-03-22 07:38:03       20 阅读
  5. C++ 函数指针与回调函数

    2024-03-22 07:38:03       24 阅读