题目描述:
思路:
我使用的是广搜,在为'1'的坐标进行广搜,每次在把一个岛屿的关联坐标处理的同时计算面积s就可以了
代码如下:
class Solution {
private:
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int s=0;
void bfs(int x,int y,vector<vector<bool>>& visited,vector<vector<int>>& grid){
queue<pair<int,int> > q;
q.push({x,y});
visited[x][y]=true;
s++;
while(!q.empty()){
int xx=q.front().first;
int yy=q.front().second;
q.pop();
for(int i=0;i<4;i++){
int fx=xx+dx[i];
int fy=yy+dy[i];
if(fx<0 || fy<0 || fy>=grid[0].size() || fx>=grid.size())continue;
if(!visited[fx][fy] && grid[fx][fy]==1){
visited[fx][fy]=true;
q.push({fx,fy});
s++;
}
}
}
}
public:
int maxAreaOfIsland(vector<vector<int>>& grid) {
int n=grid.size();
int m=grid[0].size();
int maxs=0;
vector<vector<bool>> visited=vector<vector<bool>>(n,vector<bool>(m,false));
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(visited[i][j]==false && grid[i][j]==1){
s=0;
bfs(i,j,visited,grid);
maxs=max(maxs,s);
}
}
}
return maxs;
}
};