文章目录

  • 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)相关推荐

  1. LeetCode 695.岛屿的最大面积

    LeetCode 695.岛屿的最大面积 给你一个大小为 m x n 的二进制矩阵 grid . 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的 ...

  2. LeetCode 695. 岛屿的最大面积【c++/java详细题解】

    目录 1.题目 2.思路 3.c++代码 4.java代码 1.题目 给定一个包含了一些 0 和 1 的非空二维数组 grid . 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相 ...

  3. LeetCode 695. 岛屿的最大面积

    文章目录 题目 题解 代码 题目 给定一个包含了一些 0 和 1 的非空二维数组 grid . 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直 ...

  4. LeetCode 695 岛屿的最大面积

    题目描述 给定一个包含了一些 0 和 1 的非空二维数组 grid .一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平 或者竖直方向上相邻.你可以假设 ...

  5. leetcode 695. 岛屿的最大面积 python

    题目描述: 输入的grid是一个数组,其中0代表海洋,1代表岛屿,题目要求寻找最大岛屿面积,即寻找grid中连续1的最大值. 题解: 采用深度优先搜索dfs的方法: 1.对位置[i,j],如果i j超 ...

  6. LeetCode 1254. 统计封闭岛屿的数目(图的BFS DFS)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 有一个二维矩阵 grid ,每个位置要么是陆地(记号为 0 )要么是水域(记号为 1 ). 我们从一块陆地出发,每次可以往 ...

  7. LeetCode 1020. 飞地的数量(图的BFS/DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 给出一个二维数组 A,每个单元格为 0(代表海)或 1(代表陆地). 移动是指在陆地上从一个地方走到另一个地方(朝四个方向 ...

  8. 力扣(Leetcode)695. 岛屿的最大面积(Java)带注释

    leetcode刷题695. 岛屿的最大面积 1.题目描述 2.解法 1.DFS(深度优先搜索) 2.DFS + 栈 1.题目描述 给你一个大小为 m x n 的二进制矩阵 grid . 岛屿 是由一 ...

  9. 每日一道leetcode(python)695. 岛屿的最大面积

    每日一道leetcode(python)695. 岛屿的最大面积 2021-08-21 给定一个包含了一些 0 和 1 的非空二维数组 grid .一个 岛屿 是由一些相邻的 1 (代表土地) 构成的 ...

最新文章

  1. Java取得当前类的路径
  2. hmailserver怎么搭建php,hMailServer邮件服务器安装配置(亲测可用)
  3. Spring工具类ToStringBuilder用法简介
  4. ora-01658 :无法为表空间USERS 中的段创建INITIAL区
  5. 执行计划oracle中cost,执行计划中cost计算方法
  6. 汇编语言:编写代码实现字符串的复制
  7. 使用.NET Core 3.0 预览版,Web API和Visual Studio 2019进行ASP.NET Core Blazor游戏开发
  8. Wine QQ2012 笔记
  9. zabbix 监控项-计算公式监控磁盘使用率
  10. Advanced clustering methods (Cure, Chameleon, Rock, Jarvis-Petrich)
  11. ArcGIS Engine开发之旅01---产品组成、逻辑体系结构
  12. c++ 将变量有序保存在txt文件中_python读写文件(四)
  13. shell脚本中比较、运算以及格式
  14. paip.svn 导入项目到SVN库
  15. java 视频播放_java创建简易视频播放器
  16. 如何在打印机驱动详细信息不能查看的情况下利用DISM命令备份还原打印机驱动
  17. matlab lc电路仿真,Matlab第五章 Simulink模拟电路仿真.pdf
  18. python中文意思是什么-python是什么意思中文翻译
  19. Linux下防御ddos攻击
  20. 【CV】斯坦福CS231n DL-CV by李飞飞 team

热门文章

  1. win服务器文件夹权限设置密码,win服务器 文件夹权限设置
  2. cts游戏手机版_cts游戏
  3. vue php 文件上传,使用vue.js和laravel上传文件
  4. Java IO/NIO教程
  5. EasyUI_datagrid
  6. Unity之CharacterController2D学习笔记(1)——基础使用
  7. Hadoop学习笔记—10.Shuffle过程那点事儿
  8. 用户 'IIS APPPOOL\***' 登录失败(转载)
  9. FMS3系列(三):创建基于FMS的流媒体播放程序
  10. 别人不让你发传单怎么办?