题目:

给一个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 岛屿的个数相关推荐

  1. lintcode:Number of Islands 岛屿的个数

    题目: 岛屿的个数 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 样例 在矩阵: [[1, 1, 0, 0, 0],[ ...

  2. LintCode 433. 岛屿的个数 JavaScript算法

    描述 给一个 01 矩阵,求不同的岛屿的个数. 0 代表海,1 代表岛,如果两个 1 相邻,那么这两个 1 属于同一个岛.我们只考虑上下左右为相邻. 样例 - 样例 1:输入: [[1,1,0,0,0 ...

  3. 九章算法面试题81 岛屿的个数

    原文网址: www.jiuzhang.com 问题详情 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 在线评测本题: ...

  4. 岛屿的个数number-of-islands

    给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 样例 在矩阵: [[1, 1, 0, 0, 0],[0, 1, 0, 0 ...

  5. lintcode433 岛屿的个数

    岛屿的个数 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 您在真实的面试中是否遇到过这个题? Yes 样例 在矩阵: ...

  6. LintCode 434. 岛屿的个数II(并查集)

    文章目录 1. 题目 2. 解题 1. 题目 给定 n, m, 分别代表一个二维矩阵的行数和列数, 并给定一个大小为 k 的二元数组A. 初始二维矩阵全0. 二元数组A内的k个元素代表k次操作, 设第 ...

  7. leetcode 岛屿的个数

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

  8. 岛屿的个数java_LeetCode 200:岛屿数量 Number of Islands

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

  9. leetcode 200岛屿的个数

    主要考察图搜索: 方法一:染色法,时间O(mn) 遍历一遍,再通过BFS或DFS将所有临近岛屿染色,使用dfs时将numIslands中的bfs换成dfs即可: /***** 遍历所有的点:只要遇见陆 ...

最新文章

  1. Android利用Volley异步加载(JSON和图片)完整示例
  2. Configutation读取properties文件信息
  3. vfp程序转换为c语言程序软件,c语言程序设计及vfp程序设计试题.doc
  4. Netty设计模式应用
  5. php的类有全局变量吗_解析在PHP中使用全局变量的几种方法
  6. mac上Matlab怎么运行不了,解决macOS系统下matlab无法访问中文路径及中文乱码问题...
  7. Angular5--viewChild/viewChildren、contentChild/contentChildren使用规则小结
  8. 找回git误删除的文件
  9. java讲师助理面试题_面试Java开发师常问到的5个问题(附答案)
  10. 怎么把视频和图片拼在一起?朋友圈会动的拼图视频,快速制作技巧
  11. 关于阿里云服务器安全组规则
  12. 组态(Configuration)
  13. 力扣:17. 电话号码的字母组合
  14. 史上最全软件测试工程师常见的面试题总结(九)【多测师】
  15. Dynamics 365 On-premises Field Service的安装试用问题
  16. HTML5plus 移动 App开发入门
  17. java中floa后面有L吗_关于java的nextFloat()后面跟一个nextLine()
  18. 一天一篇latex刘海洋代码解析:1.2.3填写正文
  19. win10/11 paddlepaddle2.3/2.2 之 匹配CUDA和Cudnn版本安装
  20. html下拉框的选择和值传递

热门文章

  1. 计算机丢失slimage.dll,slimage.dll
  2. 水域智慧监测,水环境监测的全新革命!
  3. benchmarksql测试mysql_web安全(一):sql注入详解
  4. Linux一些基本操作(一)
  5. DeeplabV3+ 训练自己的数据集。pytorch
  6. 百度之星 2017初赛第一场 1005 今夕何夕
  7. 【明哥版】2020最新Android Studio Win10 安装教程
  8. 5款高效的原型设计工具
  9. CTF牛刀小实——聪明的小羊
  10. Arduino中使用超声波测距实验