博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
695. Max Area of Island
阅读量:5938 次
发布时间:2019-06-19

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

题目:

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.

---------------------------------------------------------------------------------------------------------------

题目的意思就是:在一个二维数组中找到相邻1的个数,返回最大的个数

思路:这个问题有点像五子棋中判断五子的方法,通过递归就很好实现。注意一点就是:为了不重复访问相同区域,只要访问过的点就可以变为0。

直接贴上代码:

class Solution {private:  int Maxnum(vector
>& temp, int i, int j)  {    //递归的条件    if ( i >= 0 && i < temp.size() && j >= 0 && j < temp[0].size() && /*注意这个条件放最后,放最前面会越界访问*/temp[i][j] == 1)    {      temp[i][j] = 0;    //访问过的重置为0      return Maxnum(temp, i + 1, j) + Maxnum(temp, i - 1, j) + Maxnum(temp, i, j + 1) + Maxnum(temp, i, j - 1) + 1;  //递归    }    return 0;  }public:  int maxAreaOfIsland(vector
>& grid)   {    int max = 0;    for (int i = 0; i < grid.size(); ++i)    {       for (int j = 0; j < grid[0].size(); ++j)      {        if (grid[i][j] == 1)          max = std::max(Maxnum(grid, i, j), max); //std::max是标准库中max函数      }    }    return max;  }};

 

转载于:https://www.cnblogs.com/CoderZSL/p/7638235.html

你可能感兴趣的文章
一站式解决,Android 拍照 图库的各种问题
查看>>
从零开始来看一下Java泛型的设计
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
JS敏感信息泄露:不容忽视的WEB漏洞
查看>>
让我们荡起双桨,Android 小船波浪动画
查看>>
分布式memcached服务器代理magent安装配置(CentOS6.6)
查看>>
Create Volume 操作(Part III) - 每天5分钟玩转 OpenStack(52)
查看>>
tomcat 8.0虚拟机配置文档
查看>>
pxc群集搭建
查看>>
JS中加载cssText延时
查看>>
常用的脚本编程知识点
查看>>
XILINX_zynq_详解(6)
查看>>
计算机网络术语总结4
查看>>
新手小白 python之路 Day3 (string 常用方法)
查看>>
soapUI的简单使用(webservice接口功能测试)
查看>>
框架 Hibernate
查看>>
python-while循环
查看>>