其他分享
首页 > 其他分享> > 200. 岛屿数量

200. 岛屿数量

作者:互联网

链接:https://leetcode-cn.com/problems/number-of-islands/

给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

示例 1:

输入:
11110
11010
11000
00000

输出: 1
示例 2:

输入:
11000
11000
00100
00011

输出: 3

思路与LakeCounting一样 DFS

class Solution {
public:
    void dfs(vector<vector<char>>& grid, int x, int y)
    {
        grid[x][y] = '0';
        int dir[4][2] = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
        for(int i = 0; i < 4; i++)
        {
            int xx = x + dir[i][0];
            int yy = y + dir[i][1];
            if(0 <= xx && xx < grid.size() && 0 <= yy && yy < grid[0].size() && grid[xx][yy] == '1')
                dfs(grid, xx, yy);
        }
    }
    int numIslands(vector<vector<char>>& grid) {
        int cnt = 0;
        for(int i = 0; i < grid.size(); i++)
        {
            for(int j = 0; j < grid[0].size(); j++)
            {
                if(grid[i][j] == '1')
                {
                    dfs(grid, i, j);
                    cnt++;
                } 
            }
        }
        return cnt;
    }
};

 

tmhhh 发布了34 篇原创文章 · 获赞 6 · 访问量 6274 私信 关注

标签:200,cnt,11000,int,岛屿,++,grid,数量,dir
来源: https://blog.csdn.net/weixin_43569916/article/details/103945003