岛屿的最大面积

  • 思路:dfs

    • 两层遍历,遇到岛屿时,则进入深度优先遍历,也就是递归
    • 岛屿深度优先遍历
      • 判断是否越界,或者是不是岛屿,如果越界或者不是岛屿则返回
      • 将该岛屿置为海洋,并将面积加一
      • 从该岛屿出发,分别往右或者往下走一步
    • 上述递归得到面积后,与最大面积进行比较

岛屿数量

  • 思路:dfs
    *同岛屿的最大面积一致,同样是使用深度优先遍历,但不用记录面积,在进入优先遍历时,将岛屿数量+1即可。

统计子岛屿

题目:

给你两个 m x n 的二进制矩阵 grid1 和 grid2
它们只包含 0 (表示水域)和 1 (表示陆地)
一个 岛屿 是由 四个方向 (水平或者竖直)上相邻的 1 组成的区域
任何矩阵以外的区域都视为水域。如果 grid2 的一个岛屿,被 grid1 的一个岛屿 完全 包含
也就是说 grid2 中该岛屿的每一个格子都被 grid1 中同一个岛屿完全包含
那么我们称 grid2 中的这个岛屿为 子岛屿 。请你返回 grid2 中 子岛屿 的 数目 。
  • 思路:如果是从矩阵1开始判断的话,比较复杂情况,较多,逆向思维:从矩阵2开始判断,判断矩阵2中的岛屿在矩阵1中是不是岛屿,如果是的话,那该岛屿一定为子岛屿。

统计岛屿的周长

  • 思路:两个相邻的岛屿会占到两条边,一个岛屿有四条边,所以2个岛屿的周长就是,42-21=6,推进到多个岛屿即是,4n-2boarder
  • 代码思路:两层遍历,判断是否是岛屿,如果是的话,就判断右下是否有邻居,统计岛屿个数和邻居。
  • 进阶:上述题目是指只有一个岛屿,如果存在多个岛屿可以使用深度优先遍历的方法。

统计封闭岛屿的数目

  • 思路:在客路笔试遇到了这道题,但不会,后来上leetcode看了下才明白,可以先把边缘的岛屿置为水,剩下的就是在中间的岛屿,无论怎么样都是四面环水的了,同计算岛屿数量一样。

未完待续…

【算法思路】常见岛屿数量的算法题相关推荐

  1. 浅谈最小生成树的算法思路(二)Kruskal算法

    Kruskal算法是另外一种最小生成树的常见算法,理解起来,笔者觉得是比Prim算法要简单的. 算法思路 定义2个集合,集合P代表已经确定的边的集合,初始为空集.集合Q代表还未确定的边的集合,初始化为 ...

  2. 浅谈最小生成树的算法思路(一)Prim算法

    Prim算法是求最小生成树的一种常见算法,简单谈一下笔者自己的理解. 算法思路 设已经确定的点集为P,初始为空.设还未确定的点集为Q,初始为该图所有点的集合.设已经确定的边为X,初始为空. 选取任意一 ...

  3. java常见的hash算法_常见的哈希算法和用途

    写在前面 哈希算法经常会被用到,比如我们Go里面的map,Java的HashMap,目前最流行的缓存Redis都大量用到了哈希算法.它们支持把很多类型的数据进行哈希计算,我们实际使用的时候并不用考虑哈 ...

  4. php整点抽奖活动,php,抽奖算法_PHP抽奖算法思路?,php,抽奖算法,算法 - phpStudy

    PHP抽奖算法思路? 网上有个烂大街的算法,具体请看链接 大概原理是: 1,生成一个随机数: 2,循环对比第N个奖品的概率: 3,确定奖品: 如果按照这个算法,主观上是抽一次奖,但客观上,把每个奖品都 ...

  5. 【大厂高频真题100题】《岛屿数量》 真题练习第12题 持续更新~

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

  6. 按键精灵/触控精灵 多点找怪,多点找色算法思路,附带动态分析图,以及算法代码

    上面的两张动图是5宫格,6宫格动图; 先说下思路 按键/触动精灵只提供了单个找色函数,所以如果想在屏幕上找多个怪物,这里我设计的是按照屏幕大小,分成一个个小格子,然后便利格子,调用他们的单个找色函数; ...

  7. halcon算法思路_Halcon的OCR字符识别算法技巧总结

    一.重要算子 OCR分类器其实有很多,如下图所示.但是通常mlp分类器效果较好,使用较多. 主要算子如下: ① append_ocr_trainf(Character, Image : : Class ...

  8. 【聚类算法】常见的六大聚类算法

    转自:https://blog.csdn.net/Katherine_hsr/article/details/79382249 感谢博主小姐姐 算法步骤: (1) 首先我们选择一些类/组,并随机初始化 ...

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

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

最新文章

  1. Redhat、centos安装配置postgresql
  2. 解题报告:X、骑士共存问题(最大独立集)(匈牙利 / 最大流)
  3. ———— javascript中数组常用方法总结 ————
  4. 两个简单的python入门小游戏
  5. centos7安装详细图解_5G基站工程安装详细图解(纯干货)
  6. 2020年9月编程语言排行榜:C语言继续第一,你站哪个?
  7. 【NOIP2018】DAY2T2——填数游戏(轮廓线状压的dp?搜索打表)
  8. 配置phython环境
  9. JAVA入门级教学之(for循环)
  10. CodeBlocks下搭建Opencv——问题之——计算机中丢失 opencv_world300.dll
  11. OpenCV中用findContours函数出现的问题和解决方法
  12. php中验证码显示不出,PHP验证码显示不出来
  13. layui设置按钮不可点击_layui upload 模块点击选择文件按钮的禁用与启用功能
  14. linux脚本年龄计算,js+html实现周岁年龄计算器
  15. 0045-一个Dashbord页面监控多个消费者
  16. 人人都能懂的贝叶斯统计:原理与实践
  17. Python_Turtle绘制心形线(采用函数描点法绘制)(turtle实现)【2021-10-15】
  18. 激荡十年:详谈云计算的过去、现在和未来
  19. 用yara实现分析恶意样本_Yara –识别和分类恶意软件样本
  20. 网络编程之FTP文件传输协议

热门文章

  1. Libre密聊——致力于私密聊天的用心APP
  2. 盘点PDF加密的六种方法
  3. jquery.countdown.js一个时间倒计时的插件
  4. 关于F# 6的那些新功能?你了解吗?
  5. Vue——watch选项详解
  6. h5页面定时跳转+读秒
  7. 读书笔记 《第二章 复盘之道》
  8. 团队作业1---团队展示
  9. “画仓鼠” 大赛,正式回归了!
  10. node 小程序 php,基于Node.js+MySQL开发的开源微信小程序B2C商城(页面高仿网易严选)...