LC-695
这个做的比较快,一遍AC,之前在百练上做过一道一模一样的
用dfs递归就可以
问题来了:思考 如何用栈实现dfs(非递归的方式)
(实现过 但是当时比较麻烦)
class Solution {
public:
int max;
int biaoji[50][50];
int a[2]={-1,1};
int dfs(int i,int j,vector<vector<int>>& grid){
biaoji[i][j]=-1;
int bianli=1;
int len=grid.size();
int wid=grid[0].size();
if(i+1<len&&biaoji[i+1][j]==0&&grid[i+1][j]==1){
bianli+=dfs(i+1,j,grid);
}
if(i-1>=0&&biaoji[i-1][j]==0&&grid[i-1][j]==1){
bianli+=dfs(i-1,j,grid);
}
if(j+1<wid&&biaoji[i][j+1]==0&&grid[i][j+1]==1){
bianli+=dfs(i,j+1,grid);
}
if(j-1>=0&&biaoji[i][j-1]==0&&grid[i][j-1]==1){
bianli+=dfs(i,j-1,grid);
}
return bianli;
}
int maxAreaOfIsland(vector<vector<int>>& grid) {
memset(biaoji,0,sizeof(biaoji));
int max=0;
for(int i=0;i<grid.size();i++){
for(int j=0;j<grid[i].size();j++){
if(biaoji[i][j]==0&&grid[i][j]==1){
int tmp=dfs(i,j,grid);
if(max<tmp)
max=tmp;
}
}
}
return max;
}
};
网友评论