博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode] Max Area of Island 最大岛屿面积
阅读量:6331 次
发布时间:2019-06-22

本文共 1740 字,大约阅读时间需要 5 分钟。

Max Area of Island

最新更新请见:

Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) connected 4-directionally (horizontal or vertical.) You may assume all four edges of the grid are surrounded by water.

Find the maximum area of an island in the given 2D array. (If there is no island, the maximum area is 0.)

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.

深度优先搜索

思路

该题基本上就是Number of Islands的变形题,唯一的区别是在Number of Islands中我们只需要将搜索到的陆地置为0,保证其不会再被下次探索所用就行了。但这题多了一要求就是要同时返回岛屿的面积。那么最简单的方式就是在递归的时候,每个搜索到的格子都将自身的面积1,加上四个方向搜索出来的延伸面积都加上,再返回给调用递归的那个格子作为延伸面积使用,这样一直返回到岛屿的起始格子时,面积之和就是岛屿的总面积了。

代码

Go

func maxAreaOfIsland(grid [][]int) int {    maxArea := 0    for i := range grid {        for j := range grid[i] {            area := measureIsland(grid, i, j)            if area > maxArea {                maxArea = area            }        }    }    return maxArea}func measureIsland(grid [][]int, x, y int) int {    if grid[x][y] == 0 {        return 0    }    area := 1    grid[x][y] = 0    if x > 0 {        area += measureIsland(grid, x-1, y)    }    if x < len(grid)-1 {        area += measureIsland(grid, x+1, y)    }    if y > 0 {        area += measureIsland(grid, x, y-1)    }    if y < len(grid[0])-1 {        area += measureIsland(grid, x, y+1)    }    return area}

转载地址:http://buboa.baihongyu.com/

你可能感兴趣的文章
[译]HTML&CSS Lesson1: 构建第一张页面
查看>>
常用 shell 查询
查看>>
Spring中的异常处理(兼顾AJAX和FORM)
查看>>
AVG插件泄漏Chrome用户数据
查看>>
红帽发布 Ansible Tower 3.4:在混合云中实践DevOps更便捷
查看>>
了解这12个概念,让你的JavaScript水平更上一层楼
查看>>
QCon上海2015精彩演讲前瞻:一线互联网公司架构实践
查看>>
中台之上(一):重视业务架构,不要让“业务的归业务、技术的归技术”
查看>>
混沌实践访谈:混沌工程和系统可观测性密不可分
查看>>
MIT开发新加密货币,用户所需数据比比特币减少99%
查看>>
使用ConstructR启动akka集群
查看>>
Apache Kylin在绿城客户画像系统中的实践
查看>>
阿里云9月1日安骑士升级故障真相
查看>>
【对讲机的那点事】一图带你看透公网集群的五大突破
查看>>
WPF中的动画——(六)演示图板
查看>>
【WPF】ListBox嵌套与事件冒泡
查看>>
神仙打架?苹果短暂撤销 Facebook 和 Google 的企业证书
查看>>
dotnet检测类型是否为泛型
查看>>
【对讲机的那点事】公网对讲机的物联卡你了解吗?
查看>>
ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程
查看>>