• 【力扣 102】695. 岛屿的最大面积


    695. 岛屿的最大面积

    给你一个大小为 m x n 的二进制矩阵 grid 。

    岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。

    岛屿的面积是岛上值为 1 的单元格的数目。

    计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。

    示例 1:


    输入:grid = [[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:

    输入:grid = [[0,0,0,0,0,0,0,0]]
    输出:0
     

    提示:

    m == grid.length
    n == grid[i].length
    1 <= m, n <= 50
    grid[i][j] 为 0 或 1

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/max-area-of-island
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    方法一:深度优先搜索 (DFS)

    class Solution {
    public:
        int maxAreaOfIsland(vector<vector<int>>& grid) 
        {
            if(!grid.size()) return 0;
            if(!grid[0].size()) return 0;
            int m = grid.size(), n = grid[0].size();
            int res = 0;
            for(int i = 0; i < m; ++i)
            {
                for(int j = 0; j < n; ++j)
                {
                    if(grid[i][j] == 1)
                        res = max(res, dfs(grid, i, j));
                }
            }
            return res;
        }
        int dfs(vector<vector<int>> &grid, int r, int c)
        {
            int m  = grid.size(), n = grid[0].size();
            if(r < 0 || c < 0 || r >= m || c >= n || grid[r][c] == 0)
                return 0;
    
            grid[r][c] = 0;
            
            return 1 + dfs(grid,r-1,c) + dfs(grid,r+1,c) + dfs(grid,r,c-1) + dfs(grid,r,c+1);
        }
    };
  • 相关阅读:
    [转载]Markdown基础语法
    [转载]转发和重定向的区别
    浅谈网站搭建中的内网穿透、端口转发等知识点
    [转载]HTTP和HTTPS
    [转载]为什么有些语言可以被反编译?而有的不能?
    例10-2 uva12169(扩展欧几里得)
    例10-1 uva11582(裴波那切数列)
    例10-7 uva10820(欧拉)
    hdu 5137(2014广州—最短路)
    hdu 5135(2014广州—状态dp)
  • 原文地址:https://www.cnblogs.com/sunbines/p/16339667.html
Copyright © 2020-2023  润新知