【leetcode-dfs】岛屿数量
给定一个由 '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】岛屿数量相关推荐
- Leetcode 200.岛屿数量
Time: 20190902 Type: Medium 题目描述 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地 ...
- Leetcode 200. 岛屿数量 解题思路及C++实现
解题思路: 典型的深度优先搜索问题,跟第130题 被围绕的区域 有点像,只不过这里不仅要找出被水包围的岛屿,还要计算这些岛屿的总数. 使用深度优先搜索的方法,大循环是遍历整个grid数组(两个for循 ...
- LeetCode 200. 岛屿数量(图的遍历)
文章目录 1. 题目信息 2. 解题 2.1 DFS 2.2 BFS 1. 题目信息 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或 ...
- Leetcode 200 岛屿数量 (每日一题 20210720)
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量.岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成.此外,你可以假设该网格的四条边均被 ...
- LeetCode 305. 岛屿数量 II(并查集)
文章目录 1. 题目 2. 解题 2.1 超时解 2.1 改进计算方法 1. 题目 假设你设计一个游戏,用一个 m 行 n 列的 2D 网格来存储你的游戏地图. 起始的时候,每个格子的地形都被默认标记 ...
- leetcode —— 200. 岛屿数量
给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 1: 输入: ...
- Javascript(JS) leetcode 200. 岛屿数量
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成. 此外,你可以假设该网格的四条边 ...
- leetcode 200.岛屿数量 c代码
题目如下: 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它 是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围.示例一 ...
- 广度优先搜索——岛屿数量(Leetcode 200)
题目选自Leetcode 200. 岛屿数量 经典的搜索题,求岛屿数量 这里我用的是广度优先搜索BFS 最朴素的方法, 虽然效率不高,但是简单易懂 主要的问题在于:如何确定有多少个岛屿? 每次对一个& ...
- [17]岛屿数量和电话号码的字母组合
*内容来自leetcode 1.岛屿数量 题目要求 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上 ...
最新文章
- jstl标签的用法 fn标签
- java bigdecimal min_java
- 北妈每日一学:ES6语法之 箭头函数(附免费学习资料)
- Python_内置模块2
- render注册一个链接组件_vue 动态加载并注册组件、 且通过 render动态创建该组件...
- SpringBoot-Feign
- 搜狗王小川:搜狗的语音识别比阿里和科大讯飞的好
- linux--私钥登陆
- 计算机病毒——代码自解密
- Javascript模块化编程 (附WebTrends的dcsMultiTrack方法浅述)
- 目标管理 - SMART原则
- xshell如何登陆数据库_Xshell怎么连接数据库?
- JAVA实现出题团队
- 金蝶kis商贸版系统服务器,上海金蝶kis商贸版软件系统
- linux必会的30道shell编程面试题及讲解
- 机械键盘插入linux系统中,机械键盘背光灯不亮,并且键盘快捷键无作用
- c++ 判断电脑是否装有vc_redist.x86 运行时库
- 使用python快速搭建接口自动化测试脚本实战总结
- 计算机网络4 网络层
- 揭秘长尾关键词的力量:如何在搜索引擎上挤掉竞争对手?
热门文章
- Simply Good Pictures 5中文版
- 股票振幅榜 API数据接口
- 移动应用程序和网页应用程序_2020年移动应用程序设计最佳实践
- Kamiya丨Kamiya艾美捷小鼠血清淀粉样蛋白A ELISA说明书
- 想要发表论文,需要做好哪些准备?做好这三步,就够了!
- linux重定向logcat,logcat重定向adb命令.doc
- 惠普计算机怎样设置开机读u盘,怎么样设置hp台式机U盘为第一启动项
- 贵港市高中2021高考成绩查询,2021贵港最新高中排名前十
- VUE前端Excel文件下载,使用后台文件名
- 舆情分析报告写作的架构与方法|上