[dfs]leetcode695:島嶼的最大面積(medium)

題目:
在這裏插入圖片描述
題解:

代碼如下:

class Solution {
public:
    int maxAreaOfIsland(vector<vector<int>>& grid) {
        int res=0;
        int m=grid.size(),n=grid[0].size();
        for(int i=0;i<m;++i){
            for(int j=0;j<n;++j){
                if(grid[i][j]==1){
                    int val=0;
                    dfs(grid,i,j,val,m,n);
                    res=max(res,val);
                }
            }
        }
        return res;
    }

    void dfs(vector<vector<int>>& grid,int i,int j,int& val,int m,int n){
        if(!grid[i][j])return;
        //將已記錄的島嶼1改爲水0,直到圖中沒有相鄰的島嶼時一個dfs退出,表示一塊島嶼面積已經計算得出
        //最後直到島嶼的1全部變爲水0時,所有dfs退出,表示我們已經得到最大島嶼數了
        grid[i][j]=0;
        val++;
        if(i-1>=0)dfs(grid,i-1,j,val,m,n);
        if(i+1<m)dfs(grid,i+1,j,val,m,n);
        if(j-1>=0)dfs(grid,i,j-1,val,m,n);
        if(j+1<n)dfs(grid,i,j+1,val,m,n);
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章