zoukankan      html  css  js  c++  java
  • LeetCode 岛屿的最大面积(探索字节跳动)

    题目描述

    给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。

    找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)

    示例 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]]
    

    对于上面这个给定矩阵应返回 6。注意答案不应该是11,因为岛屿只能包含水平或垂直的四个方向的‘1’。

    示例 2:

    [[0,0,0,0,0,0,0,0]]

    对于上面这个给定的矩阵, 返回 0

    注意: 给定的矩阵grid 的长度和宽度都不超过 50。

    解题思路

    深度优先搜索思想,每找到一个陆地点,就搜索它所相邻的所有陆地,记录当前最大面积。

    代码

     1 class Solution {
     2 public:
     3     int maxAreaOfIsland(vector<vector<int>>& grid) {
     4         int max_area = 0;
     5         for(int i = 0; i < grid.size(); i++){
     6             for(int j = 0; j < grid[0].size(); j++){
     7                 if(grid[i][j]){
     8                     int temp = 1;
     9                     dfs(grid, i, j, temp, max_area);
    10                 }
    11             }
    12         }
    13         return max_area;
    14     }
    15     void dfs(vector<vector<int>>& grid, int i, int j, int &area, int &max_area){
    16         grid[i][j] = 0;
    17         if(i < grid.size() - 1 && grid[i + 1][j])
    18             dfs(grid, i + 1, j, ++area, max_area);
    19         if(j < grid[0].size() - 1 && grid[i][j + 1])
    20             dfs(grid, i, j + 1, ++area, max_area);
    21         if(i > 0 && grid[i - 1][j])
    22             dfs(grid, i - 1, j, ++area, max_area);
    23         if(j > 0 && grid[i][j - 1])
    24             dfs(grid, i, j - 1, ++area, max_area);
    25         max_area = max(area, max_area);
    26     }
    27 };
  • 相关阅读:
    swiftlint升级
    collectionView初始化
    UITabBarController加载之后不显示sub view controller
    非常不错的博客收藏!!!!
    C#静态类 静态方法与非静态方法比较
    C#中抽象方法与虚方法的区别
    C#中的反射
    C#中的访问修饰符
    可以使用foreach遍历循环的条件
    Http协议三次握手过程
  • 原文地址:https://www.cnblogs.com/wmx24/p/10152190.html
Copyright © 2011-2022 走看看