LintCode 岛屿的个数
题目:
给一个01矩阵,求不同的岛屿的个数。
0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
样例
在矩阵:
[[1, 1, 0, 0, 0],[0, 1, 0, 0, 1],[0, 0, 0, 1, 1],[0, 0, 0, 0, 0],[0, 0, 0, 0, 1]
]
中有 3
个岛.
思想:
运用了一些递归的思想,首先是双层for循环逐个遍历矩阵的元素.
找到某个元素为1的时候,利用递归的思想将这个元素的上下左右,和它相邻的为true的上下左右元素,和相邻的相邻的.... 这些元素改为false
最后返回num
代码:
public static int numIslands(boolean[][] grid) {// Write your code hereint num = 0;if (grid == null)return 0;for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[i].length; j++) {if (grid[i][j] == true) {num++;grid = change(grid, i, j);}}}return num;}
public static boolean[][] change(boolean[][] grid, int i, int j) {// 修改为falsegrid[i][j] = false;if (i > 0 && grid[i - 1][j] == true) {// 修改左边的grid = change(grid, i - 1, j);}if (j < grid[i].length - 1 && grid[i][j + 1] == true) {// 修改右边的grid = change(grid, i, j + 1);}if (j > 0 && grid[i][j - 1] == true) {// 修改上边的grid = change(grid, i, j - 1);}if (i < grid.length - 1 && grid[i + 1][j] == true) {// 修改下边的grid = change(grid, i + 1, j);}return grid;}
LintCode 岛屿的个数相关推荐
- lintcode:Number of Islands 岛屿的个数
题目: 岛屿的个数 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 样例 在矩阵: [[1, 1, 0, 0, 0],[ ...
- LintCode 433. 岛屿的个数 JavaScript算法
描述 给一个 01 矩阵,求不同的岛屿的个数. 0 代表海,1 代表岛,如果两个 1 相邻,那么这两个 1 属于同一个岛.我们只考虑上下左右为相邻. 样例 - 样例 1:输入: [[1,1,0,0,0 ...
- 九章算法面试题81 岛屿的个数
原文网址: www.jiuzhang.com 问题详情 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 在线评测本题: ...
- 岛屿的个数number-of-islands
给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 样例 在矩阵: [[1, 1, 0, 0, 0],[0, 1, 0, 0 ...
- lintcode433 岛屿的个数
岛屿的个数 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 您在真实的面试中是否遇到过这个题? Yes 样例 在矩阵: ...
- LintCode 434. 岛屿的个数II(并查集)
文章目录 1. 题目 2. 解题 1. 题目 给定 n, m, 分别代表一个二维矩阵的行数和列数, 并给定一个大小为 k 的二元数组A. 初始二维矩阵全0. 二元数组A内的k个元素代表k次操作, 设第 ...
- leetcode 岛屿的个数
给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 1: 输入: ...
- 岛屿的个数java_LeetCode 200:岛屿数量 Number of Islands
题目: 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. Given ...
- leetcode 200岛屿的个数
主要考察图搜索: 方法一:染色法,时间O(mn) 遍历一遍,再通过BFS或DFS将所有临近岛屿染色,使用dfs时将numIslands中的bfs换成dfs即可: /***** 遍历所有的点:只要遇见陆 ...
最新文章
- Android利用Volley异步加载(JSON和图片)完整示例
- Configutation读取properties文件信息
- vfp程序转换为c语言程序软件,c语言程序设计及vfp程序设计试题.doc
- Netty设计模式应用
- php的类有全局变量吗_解析在PHP中使用全局变量的几种方法
- mac上Matlab怎么运行不了,解决macOS系统下matlab无法访问中文路径及中文乱码问题...
- Angular5--viewChild/viewChildren、contentChild/contentChildren使用规则小结
- 找回git误删除的文件
- java讲师助理面试题_面试Java开发师常问到的5个问题(附答案)
- 怎么把视频和图片拼在一起?朋友圈会动的拼图视频,快速制作技巧
- 关于阿里云服务器安全组规则
- 组态(Configuration)
- 力扣:17. 电话号码的字母组合
- 史上最全软件测试工程师常见的面试题总结(九)【多测师】
- Dynamics 365 On-premises Field Service的安装试用问题
- HTML5plus 移动 App开发入门
- java中floa后面有L吗_关于java的nextFloat()后面跟一个nextLine()
- 一天一篇latex刘海洋代码解析:1.2.3填写正文
- win10/11 paddlepaddle2.3/2.2 之 匹配CUDA和Cudnn版本安装
- html下拉框的选择和值传递