dfs-岛屿面积

2020-01-18  本文已影响0人  锦绣拾年

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;
        
    }
};

上一篇 下一篇

猜你喜欢

热点阅读