给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

示例 1:

输入:
11110
11010
11000
00000输出: 1

示例 2:

输入:
11000
11000
00100
00011输出: 3

思路:

1.遍历整个矩阵,当 arr[i][j] === 1 时,将其值改成2,同时 岛的数量 +1;

2.将这个位置的 上、下、左、右 的四个位置的值都检查一遍,(递归实现)

位置 i,j超出边界 或 该位置的值 不等于1,返回;
不是上面的情况,则:将该位置的值改为 2 ,再重复步骤2。

class Solution {public int numIslands(char[][] grid) {if (grid == null || grid.length == 0) {return 0;}int m = grid.length;int n = grid[0].length;int res = 0;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (grid[i][j] == '1') {res++;dfs(i, j, grid);}}}return res;}public void dfs(int i, int j, char[][] grid) {//递归结束条件if (i < 0 || j < 0 || i > grid.length - 1 || j > grid[0].length - 1) {return;}if (grid[i][j] == '1') {grid[i][j] = '2';dfs(i - 1, j, grid);dfs(i, j - 1, grid);dfs(i, j + 1, grid);dfs(i + 1, j, grid);}}
}

【leetcode-dfs】岛屿数量相关推荐

  1. Leetcode 200.岛屿数量

    Time: 20190902 Type: Medium 题目描述 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地 ...

  2. Leetcode 200. 岛屿数量 解题思路及C++实现

    解题思路: 典型的深度优先搜索问题,跟第130题 被围绕的区域 有点像,只不过这里不仅要找出被水包围的岛屿,还要计算这些岛屿的总数. 使用深度优先搜索的方法,大循环是遍历整个grid数组(两个for循 ...

  3. LeetCode 200. 岛屿数量(图的遍历)

    文章目录 1. 题目信息 2. 解题 2.1 DFS 2.2 BFS 1. 题目信息 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或 ...

  4. Leetcode 200 岛屿数量 (每日一题 20210720)

    给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量.岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成.此外,你可以假设该网格的四条边均被 ...

  5. LeetCode 305. 岛屿数量 II(并查集)

    文章目录 1. 题目 2. 解题 2.1 超时解 2.1 改进计算方法 1. 题目 假设你设计一个游戏,用一个 m 行 n 列的 2D 网格来存储你的游戏地图. 起始的时候,每个格子的地形都被默认标记 ...

  6. leetcode —— 200. 岛屿数量

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 1: 输入: ...

  7. Javascript(JS) leetcode 200. 岛屿数量

    给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成. 此外,你可以假设该网格的四条边 ...

  8. leetcode 200.岛屿数量 c代码

    题目如下: 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它 是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围.示例一 ...

  9. 广度优先搜索——岛屿数量(Leetcode 200)

    题目选自Leetcode 200. 岛屿数量 经典的搜索题,求岛屿数量 这里我用的是广度优先搜索BFS 最朴素的方法, 虽然效率不高,但是简单易懂 主要的问题在于:如何确定有多少个岛屿? 每次对一个& ...

  10. [17]岛屿数量和电话号码的字母组合

    *内容来自leetcode 1.岛屿数量 题目要求 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上 ...

最新文章

  1. jstl标签的用法 fn标签
  2. java bigdecimal min_java
  3. 北妈每日一学:ES6语法之 箭头函数(附免费学习资料)
  4. Python_内置模块2
  5. render注册一个链接组件_vue 动态加载并注册组件、 且通过 render动态创建该组件...
  6. SpringBoot-Feign
  7. 搜狗王小川:搜狗的语音识别比阿里和科大讯飞的好
  8. linux--私钥登陆
  9. 计算机病毒——代码自解密
  10. Javascript模块化编程 (附WebTrends的dcsMultiTrack方法浅述)
  11. 目标管理 - SMART原则
  12. xshell如何登陆数据库_Xshell怎么连接数据库?
  13. JAVA实现出题团队
  14. 金蝶kis商贸版系统服务器,上海金蝶kis商贸版软件系统
  15. linux必会的30道shell编程面试题及讲解
  16. 机械键盘插入linux系统中,机械键盘背光灯不亮,并且键盘快捷键无作用
  17. c++ 判断电脑是否装有vc_redist.x86 运行时库
  18. 使用python快速搭建接口自动化测试脚本实战总结
  19. 计算机网络4 网络层
  20. 揭秘长尾关键词的力量:如何在搜索引擎上挤掉竞争对手?

热门文章

  1. Simply Good Pictures 5中文版
  2. 股票振幅榜 API数据接口
  3. 移动应用程序和网页应用程序_2020年移动应用程序设计最佳实践
  4. Kamiya丨Kamiya艾美捷小鼠血清淀粉样蛋白A ELISA说明书
  5. 想要发表论文,需要做好哪些准备?做好这三步,就够了!
  6. linux重定向logcat,logcat重定向adb命令.doc
  7. 惠普计算机怎样设置开机读u盘,怎么样设置hp台式机U盘为第一启动项
  8. 贵港市高中2021高考成绩查询,2021贵港最新高中排名前十
  9. VUE前端Excel文件下载,使用后台文件名
  10. 舆情分析报告写作的架构与方法|上