695. 岛屿的最大面积
就简单的深度遍历递归,加上方向数组,当然直接多个递归也可以,但是多调用函数会增加函数调用栈的开销,还是用方向数组稍微快些吧
代码
class Solution {
public:
void Count(vector<vector<int>>& grid,int sr,int sc,vector<vector<int>>& visited,int &count){
visited[sr][sc]=1;
count++;
int dir[4][2] = {{0, 1}, {1, -1}, {-1, -1}, {-1, 1}};
for(int i=0;i<4;i++){
sr+=dir[i][0];
sc+=dir[i][1];
if(sr>=0&&sr<grid.size()&&sc>=0&&sc<grid[0].size()&&visited[sr][sc]==0&&grid[sr][sc]==1) {
Count(grid,sr,sc,visited,count);
}
}
}
int maxAreaOfIsland(vector<vector<int>>& grid) {
//这个就是要计算一下了
int max=0;
vector<vector<int>> visited(grid.size(),vector<int>(grid[0].size()));
for(int i=0;i<grid.size();i++){
for(int j=0;j<grid[0].size();j++){
if(grid[i][j]==0||visited[i][j]==1)continue;
int count=0;
Count(grid,i,j,visited,count);
if(count>max)max=count;
}
}
return max;
}
};