LeetCode 695. 岛屿的最大面积(图的BFS/DFS)
文章目录
- 1. 题目
- 2. 解题
- 2.1 BFS广度优先搜索
- 2.2 DFS深度优先搜索
1. 题目
给定一个包含了一些 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。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/max-area-of-island
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 简单的题目
- 图的广度或者深度优先搜索
- visited数组访问标记—> 直接在地图上改数据为0
2.1 BFS广度优先搜索
class Solution {int maxS = 0;int m, n;vector<vector<int>> dir = {{1,0},{0,1},{0,-1},{-1,0}};
public:int maxAreaOfIsland(vector<vector<int>>& grid) {int curS = 0, i, j, i0, j0, k, x, y;m = grid.size(), n = grid[0].size();queue<pair<int,int>> q;for(i = 0; i < m; ++i){for(j = 0; j < n; ++j){if(grid[i][j])// == 1{q.push({i,j});curS = 1;//当前面积为1grid[i][j] = 0;//访问过了while(!q.empty()){i0 = q.front().first;j0 = q.front().second;q.pop();for(k = 0; k < 4; ++k){x = i0+dir[k][0];y = j0+dir[k][1];if(x>=0 && x<m && y>=0 && y<n && grid[x][y]){q.push({x,y});grid[x][y] = 0;//访问过了curS++;}}}if(curS > maxS)maxS = curS;}}}return maxS;}
};
2.2 DFS深度优先搜索
class Solution {int maxS = 0;int m, n;vector<vector<int>> dir = {{1,0},{0,1},{0,-1},{-1,0}};
public:int maxAreaOfIsland(vector<vector<int>>& grid) {int curS = 0, i, j;m = grid.size(), n = grid[0].size();for(i = 0; i < m; ++i){for(j = 0; j < n; ++j){if(grid[i][j])// == 1{curS = 1;//当前面积为1grid[i][j] = 0;//访问过了dfs(grid,i,j,curS);if(curS > maxS)maxS = curS;}}}return maxS;}void dfs(vector<vector<int>>& grid, int i, int j, int &curS){int x, y, k;for(k = 0; k < 4; ++k){x = i+dir[k][0];y = j+dir[k][1];if(x>=0 && x<m && y>=0 && y<n && grid[x][y]){grid[x][y] = 0;//访问过了curS++;dfs(grid,x,y,curS);}}}
};
LeetCode 695. 岛屿的最大面积(图的BFS/DFS)相关推荐
- LeetCode 695.岛屿的最大面积
LeetCode 695.岛屿的最大面积 给你一个大小为 m x n 的二进制矩阵 grid . 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的 ...
- LeetCode 695. 岛屿的最大面积【c++/java详细题解】
目录 1.题目 2.思路 3.c++代码 4.java代码 1.题目 给定一个包含了一些 0 和 1 的非空二维数组 grid . 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相 ...
- LeetCode 695. 岛屿的最大面积
文章目录 题目 题解 代码 题目 给定一个包含了一些 0 和 1 的非空二维数组 grid . 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直 ...
- LeetCode 695 岛屿的最大面积
题目描述 给定一个包含了一些 0 和 1 的非空二维数组 grid .一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平 或者竖直方向上相邻.你可以假设 ...
- leetcode 695. 岛屿的最大面积 python
题目描述: 输入的grid是一个数组,其中0代表海洋,1代表岛屿,题目要求寻找最大岛屿面积,即寻找grid中连续1的最大值. 题解: 采用深度优先搜索dfs的方法: 1.对位置[i,j],如果i j超 ...
- LeetCode 1254. 统计封闭岛屿的数目(图的BFS DFS)
文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 有一个二维矩阵 grid ,每个位置要么是陆地(记号为 0 )要么是水域(记号为 1 ). 我们从一块陆地出发,每次可以往 ...
- LeetCode 1020. 飞地的数量(图的BFS/DFS)
文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 给出一个二维数组 A,每个单元格为 0(代表海)或 1(代表陆地). 移动是指在陆地上从一个地方走到另一个地方(朝四个方向 ...
- 力扣(Leetcode)695. 岛屿的最大面积(Java)带注释
leetcode刷题695. 岛屿的最大面积 1.题目描述 2.解法 1.DFS(深度优先搜索) 2.DFS + 栈 1.题目描述 给你一个大小为 m x n 的二进制矩阵 grid . 岛屿 是由一 ...
- 每日一道leetcode(python)695. 岛屿的最大面积
每日一道leetcode(python)695. 岛屿的最大面积 2021-08-21 给定一个包含了一些 0 和 1 的非空二维数组 grid .一个 岛屿 是由一些相邻的 1 (代表土地) 构成的 ...
最新文章
- Java取得当前类的路径
- hmailserver怎么搭建php,hMailServer邮件服务器安装配置(亲测可用)
- Spring工具类ToStringBuilder用法简介
- ora-01658 :无法为表空间USERS 中的段创建INITIAL区
- 执行计划oracle中cost,执行计划中cost计算方法
- 汇编语言:编写代码实现字符串的复制
- 使用.NET Core 3.0 预览版,Web API和Visual Studio 2019进行ASP.NET Core Blazor游戏开发
- Wine QQ2012 笔记
- zabbix 监控项-计算公式监控磁盘使用率
- Advanced clustering methods (Cure, Chameleon, Rock, Jarvis-Petrich)
- ArcGIS Engine开发之旅01---产品组成、逻辑体系结构
- c++ 将变量有序保存在txt文件中_python读写文件(四)
- shell脚本中比较、运算以及格式
- paip.svn 导入项目到SVN库
- java 视频播放_java创建简易视频播放器
- 如何在打印机驱动详细信息不能查看的情况下利用DISM命令备份还原打印机驱动
- matlab lc电路仿真,Matlab第五章 Simulink模拟电路仿真.pdf
- python中文意思是什么-python是什么意思中文翻译
- Linux下防御ddos攻击
- 【CV】斯坦福CS231n DL-CV by李飞飞 team
热门文章
- win服务器文件夹权限设置密码,win服务器 文件夹权限设置
- cts游戏手机版_cts游戏
- vue php 文件上传,使用vue.js和laravel上传文件
- Java IO/NIO教程
- EasyUI_datagrid
- Unity之CharacterController2D学习笔记(1)——基础使用
- Hadoop学习笔记—10.Shuffle过程那点事儿
- 用户 'IIS APPPOOL\***' 登录失败(转载)
- FMS3系列(三):创建基于FMS的流媒体播放程序
- 别人不让你发传单怎么办?