经典BFS,也可以深搜,或者并查集

class Solution {
public:
int numIslands(vector<vector<char>>& grid) {
int ans=0;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
queue<pair<int,int>> q;
for(int i=0;i<grid.size();i++)
{
for(int j=0;j<grid[i].size();j++)
{
if(grid[i][j]=='1')
{
ans++;
q.push({i,j});
grid[i][j]='0';
while(!q.empty())
{
int x=q.front().first;
int y=q.front().second;
for(int k=0;k<4;k++)
{
int xx=x+dx[k];
int yy=y+dy[k];
if(xx<0||xx>=grid.size()||yy<0||yy>=grid[i].size()||grid[xx][yy]!='1') continue;
q.push({xx,yy});
grid[xx][yy]='0';
}
q.pop();
}
}
}
}
return ans;
}
};

325

被折叠的 条评论
为什么被折叠?



