zoukankan      html  css  js  c++  java
  • 695. Max Area of Island

    问题:

    给定一个由0,1 组成的二维数组,0代表海水,1代表陆地,

    求给定数组所形成小岛的最大面积。

    Example 1:
    [[0,0,1,0,0,0,0,1,0,0,0,0,0],
     [0,0,0,0,0,0,0,1,1,1,0,0,0],
     [0,1,1,0,1,0,0,0,0,0,0,0,0],
     [0,1,0,0,1,1,0,0,1,0,1,0,0],
     [0,1,0,0,1,1,0,0,1,1,1,0,0],
     [0,0,0,0,0,0,0,0,0,0,1,0,0],
     [0,0,0,0,0,0,0,1,1,1,0,0,0],
     [0,0,0,0,0,0,0,1,1,0,0,0,0]]
    Given the above grid, return 6. Note the answer is not 11, because the island must be connected 4-directionally.
    
    Example 2:
    [[0,0,0,0,0,0,0,0]]
    Given the above grid, return 0.
    
    Note: The length of each dimension in the given grid does not exceed 50.
    

      

    解法:DFS

    深度优先递归

    标记已遍历过为0:  grid[i][j]=0;

    向四个方向逐次探索,若不满足条件:超出数组范围or为海水节点0,则直接返回当前面积为0

    否则当前面积为1,在以当前节点为轴心,再次向四周探索。每个方向的结果累加,最后返回总面积。

    在最外层,顺次遍历整个给定数组,只对 未曾访问过&&陆地节点(grid[i][j]=1)的节点进行上述递归处理。

    代码参考:

     1 class Solution {
     2 public:
     3     int dfs(vector<vector<int>>& grid, int n, int m, int i, int j){
     4         if(i<0 || i>=n || j<0 || j>=m || grid[i][j] == 0) return 0;
     5         grid[i][j]=0;
     6         int area=1;
     7         area+=dfs(grid, n, m, i-1, j);
     8         area+=dfs(grid, n, m, i+1, j);
     9         area+=dfs(grid, n, m, i, j-1);
    10         area+=dfs(grid, n, m, i, j+1);
    11         return area;
    12     }
    13     int maxAreaOfIsland(vector<vector<int>>& grid) {
    14         int res=0;
    15         if(grid.size()==0)return 0;
    16         int n=grid.size(), m=grid[0].size();
    17         for(int i=0; i<n; i++){
    18             for(int j=0; j<m; j++){
    19                 if(grid[i][j]==1){
    20                     res=max(res,dfs(grid, n, m, i, j));
    21                 }
    22             }
    23         }
    24         return res;
    25     }
    26 };
  • 相关阅读:
    2018
    线程的五大状态
    SQL 列转行与行转列
    python中元组(tuple)的拆包unkacping
    python字典的相关操作总结
    C语言使用typedef进行类型重定义
    C++中namespace的用法理解
    ping: unknown host 解决办法
    go环境变量配置liteide配置
    svn出现Authorization failed
  • 原文地址:https://www.cnblogs.com/habibah-chang/p/12737426.html
Copyright © 2011-2022 走看看