• 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 };
  • 相关阅读:
    希尔排序
    基数排序
    spring8——AOP之Bean的自动代理生成器
    spring7——AOP之通知和顾问
    spring6——AOP的编程术语
    spring5——Aop的实现原理(动态代理)
    spring4——IOC之基于注解的依赖注入(DI )
    spring3——IOC之基于XML的依赖注入(DI )
    spring2——IOC之Bean的装配
    spring1——IOC之原理
  • 原文地址:https://www.cnblogs.com/wmx24/p/10152190.html
Copyright © 2020-2023  润新知