695. 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.

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

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

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

直接贴上代码:

class Solution {
private:
  int Maxnum(vector<vector<int>>& 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<vector<int>>& 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

内容概要:本文详细介绍了使用KGDB(Kernel GNU Debugger)调试Linux内核的方法及其重要性。文章首先强调了Linux内核作为系统核心的重要性及其调试的必要性,随后介绍了KGDB的基本原理和优势,包括其基于调试stub和GDB串行协议的工作机制。接着,文章详细描述了使用KGDB调试内核的具体步骤,包括准备工作、内核配置、设置启动参数、建立调试连接和进行调试操作。文中还通过一个实战案例展示了KGDB在解决实际问题中的应用,并总结了使用KGDB时的注意事项和常见问题的解决方法。最后,文章展望了KGDB未来的发展方向和应用场景,如优化调试性能、支持新型硬件架构以及在嵌入式系统、云计算和大数据领域的应用。 适合人群:具备一定Linux系统开发经验的研发人员,尤其是那些需要调试和优化Linux内核的工程师。 使用场景及目标:①帮助开发者深入了解Linux内核的运行状态,精准定位并修复内核问题;②优化内核性能,提高系统的稳定性和可靠性;③适用于嵌入式系统开发、远程服务器维护等场景,特别是在硬件资源有限或无法直接接触设备的情况下。 其他说明:在使用KGDB进行调试时,需特别注意串口设置的一致性、内核版本的兼容性以及调试信息的完整性。同时,要解决常见的连接失败、断点无效等问题,确保调试过程顺利进行。未来,KGDB有望在技术上不断优化,并拓展到更多应用场景中,为Linux系统的持续发展提供支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值