695. 岛屿的最大面积
bfs
用数组模拟队列,队尾的下标+1就为该岛屿的面积。
class Solution {
public:
int dir[4][2]={1,0,0,1,-1,0,0,-1};
int bfs(vector<vector<int>>&grid,vector<vector<bool>>&visit,int qix,int qiy)
{
pair<int,int> q[3000];int hh=0,tt=-1;
q[++tt]={qix,qiy};
visit[qix][qiy]=1;
while(hh<=tt)
{
pair<int,int>cur=q[hh++];
for(int i=0;i<4;i++)
{
int xx=cur.first+dir[i][0],yy=cur.second+dir[i][1];
if(xx<0||xx>=grid.size()||yy<0||yy>=grid[0].size())continue;
if(!visit[xx][yy]&&grid[xx][yy])
{
visit[xx][yy]=1;
q[++tt]={xx,yy};
}
}
}
return tt+1;
}
int maxAreaOfIsland(vector<vector<int>>& grid) {
int ant=0;
int n=grid.size(),m=grid[0].size();
vector<vector<bool>>visit(n,vector<bool>(m,false));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(!visit[i][j]&&grid[i][j])
{
ant=max(ant,bfs(grid,visit,i,j));
}
}
}
return ant;
}
};