LeetCode 695 岛屿的最大面积
题目:
给定一个包含了一些 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。
解题思路:
深度优先搜索。以grid为1的坐标为中心,分别向上下左右四个方向进行搜索,这里注意边界条件:四个方向的坐标应该在grid矩阵内。
代码:
class Solution {
public:
int cnt;
int c,k;
int maxArea = ;
int maxAreaOfIsland(vector<vector<int>>& grid) {
vector<vector<bool>> visited; c = grid.size();
k = grid[].size();
visited.resize(c);
for(int i=; i<c; i++) //visited数组初始化,对于本题可以直接用grid作为访问标记。
visited[i].resize(k);
for(int i=; i<c; ++i)
for(int j=; j<k; ++j){
visited[i][j] = false;
} for(int i=; i<c; ++i)
for(int j=; j<k; ++j) {
if(!visited[i][j] && grid[i][j]) {
cnt = ;
DFS(grid,i,j,visited);
maxArea = max(maxArea, cnt);
}
}
return maxArea;
} void DFS(vector<vector<int>> &grid, int i,int j, vector<vector<bool>> &visited) {
visited[i][j] = true;
//以下进行上下左右搜索
if(i+ < c && !visited[i+][j] && grid[i+][j] ) {
cnt++;
DFS(grid,i+,j,visited); }
if(i->= && !visited[i-][j] && grid[i-][j]) {
cnt++;
DFS(grid, i-, j, visited); }
if(j+<k && !visited[i][j+] && grid[i][j+]) {
cnt++;
DFS(grid,i,j+,visited); }
if(j->= && !visited[i][j-] && grid[i][j-]) {
cnt++;
DFS(grid,i,j-,visited); }
}
};
LeetCode 695 岛屿的最大面积的更多相关文章
- [LeetCode]695. 岛屿的最大面积(DFS/BFS)、200. 岛屿数量(DFS/BFS待做/并差集待做)
695. 岛屿的最大面积 题目 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被 ...
- Java实现 LeetCode 695 岛屿的最大面积(DFS)
695. 岛屿的最大面积 给定一个包含了一些 0 和 1 的非空二维数组 grid . 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相 ...
- Leetcode之深度优先搜索(DFS)专题-695. 岛屿的最大面积(Max Area of Island)
Leetcode之深度优先搜索(DFS)专题-695. 岛屿的最大面积(Max Area of Island) 深度优先搜索的解题详细介绍,点击 给定一个包含了一些 0 和 1的非空二维数组 grid ...
- 图-连通分量-DFS-并查集-695. 岛屿的最大面积
2020-03-15 16:41:45 问题描述: 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二 ...
- Leetcode 200.岛屿的数量 - DFS、BFS
Leetcode 200 岛屿的数量: DFS利用函数调用栈保证了检索顺序, BFS则需要自己建立队列,把待检索对象按规则入队. class Solution { // DFS解法,8ms/10.7M ...
- 算法23-------岛屿的最大面积 LeetCode 695
一.题目: 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被水包围着. 找到给定 ...
- LeetCode 岛屿的最大面积
给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被水包围着. 找到给定的二维数组中 ...
- LeetCode 岛屿的最大面积(探索字节跳动)
题目描述 给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被水包围着. 找到给定的 ...
- leetcode 695 Max Area of Island 岛的最大面积
这个题使用深度优先搜索就可以直接遍历 DFS递归方法: class Solution { public: vector<vector<,},{,-},{,},{,}}; int maxAr ...
随机推荐
- npm 传入参数
你可以运行类似npm start 8080的代码,并且不需要去修改script.js或者配置文件: 例如,在你的"scripts"JSON值,包括-- "start&qu ...
- ftp权限设置大全!!!
1.登录和对匿名用户的设置write_enable=YES //是否对登录用户开启写权限.属全局性设置.默认NOlocal_enable=YES ...
- Linux 其它知识点
1:import sys ----导入路径 sys.path.append("/hom") ----添加一个hom的路径 2:重新导入模块 from imp import ...
- P2365 任务安排 / [FJOI2019]batch(斜率优化dp)
P2365 任务安排 batch:$n<=10000$ 斜率优化入门题 $n^{3}$的dp轻松写出 但是枚举这个分成多少段很不方便 我们利用费用提前的思想,提前把这个烦人的$S$在后面的贡献先 ...
- Html table、thead、tr、th、td 标签
Html table.thead.tr.th.td 标签 案例一 <!-- table 表格标签,配置表格使用.border="1" 添加表格框架 --> <ta ...
- Oracle 12c 的RMAN备份
备份 rman只备份cdb 只备份CDB数据库需要具有SYSDBA或SYSBACKUP权限用户连接到CDB的root环境下,执行backupdatabase root命令即可完成对CDB的备份,方法如 ...
- ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails ()
centos7.5 删除表空间文件失败 问题: mysql> alter table country discard tablespace; ERROR 1451 (23000): Cannot ...
- GIT 私有仓库 github项目提交失败 master -> master (non-fast-forward)
https://blog.csdn.net/fightingforcv/article/details/52073182 https://blog.csdn.net/u014135752/articl ...
- Learning-Python【17】:包的导入使用
在同一级目录下新建 p1.py 和 run.py,添加代码 # p1.py 模块的设计者 def f1(): print("from f1") def f2(): print(&q ...
- 通过修改DNS达到不FQ也能访问Google(2018-12-25至现在已失效)
一.前言 不知道各位小伙伴们现在用的搜索引擎是用Google搜索还是百度搜索呢?但我个人还是比较极力推荐用Google搜索的,首先用百度搜索后的结果的前几项大部分是满屏的广告,甚至搜索的结果并不能直接 ...