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