leetcode 200. 岛屿数量

该篇文章介绍了一种使用深度优先搜索(DFS)解决的问题,即在表示海洋和陆地的二维网格中计算岛屿的数量。当找到一个陆地(1)时,通过DFS将与其相邻的陆地标记为0,同时计数器加一。最终计数器的值即为岛屿总数。
摘要由CSDN通过智能技术生成

 思路:一个一个遍历数组,如果发现一块是陆地,就将和他相连的所有陆地全部置为0,然后count++,这样遍历完count的值就是岛屿的数量。

代码如下

class Solution {
public:
    int numIslands(vector<vector<char>>& grid) {
        int res=0;
        for(int i = 0;i < grid.size(); i++){
            for(int j = 0;j < grid[0].size(); j++){

                 if(grid[i][j]=='1'){//如果是一就发现一个岛屿,然后把和他相连的岛屿全部置为0
                     dfs(grid,i,j);
                     res++;
                }
                 
            }
        }
       
        return res;
    }

    void dfs(vector<vector<char>>& grid, int i,int j){
        if(  i<0 || i>=grid.size()|| j<0 || j>=grid[0].size()|| grid[i][j]=='0')  return;
        //要先判断数组是否越界,再判断值是否等于'0',否则会报错
        grid[i][j]='0';
        dfs(grid, i, j+1);
        dfs(grid, i+1, j);
        dfs(grid, i, j-1);
        dfs(grid, i-1, j);
        return;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值