二:思路
1.这里的遍历数据方式为BFS广度遍历
2.当我们遇到一个‘1’的时候,我们就遍历他的左右上下(邻接点),如果是1那就入队,直到队列
为空为止。
3.我们记录每个岛屿的面积是采用 我们设置初始值为1,当每遇到一个邻接点为1就统计其个数
直到该队列为空,将其面积统计到一个容器当中,最后计算出最大值
三:上码
class Solution {
public:int maxAreaOfIsland(vector<vector<int>>& grid) {/**思路:1.这里的遍历数据方式为BFS广度遍历2.当我们遇到一个‘1’的时候,我们就遍历他的左右上下(邻接点),如果是1那就入队,直到队列为空为止。3.我们记录每个岛屿的面积是采用 我们设置初始值为1,当每遇到一个邻接点为1就统计其个数直到该队列为空,将其面积统计到一个容器当中,最后计算出最大值*/int m = grid.size();//表示二维矩阵的行int n = grid[0].size();//表示二维矩阵的列vector<int> v;//存面积用的for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){queue<pair<int,int> >q;int count = 0;if(grid[i][j] == 1){q.push({i,j});grid[i][j] = 0;//访问过一个结点 就将其设置为 '0' count = 1;} //while(!q.empty()){auto temp = q.front();q.pop();int nr = temp.first;//代表行int nc = temp.second;//代表列//该节点的上方if(nr-1 >= 0 && grid[nr-1][nc] == 1){q.push({nr-1,nc});grid[nr-1][nc] = 0;count++;}//该节点的下方if(nr+1 < m && grid[nr+1][nc] == 1){q.push({nr+1,nc});grid[nr+1][nc] = 0;count++;}//该节点的左方if(nc-1 >= 0 && grid[nr][nc-1] == 1){q.push({nr,nc-1});grid[nr][nc-1] = 0;count++;}//该节点的右方if(nc+1< n && grid[nr][nc+1] == 1){q.push({nr,nc+1});grid[nr][nc+1] = 0;count++;}}v.push_back(count);}}sort(v.begin(),v.end());int temp = v.size() - 1; return v[temp];}
};