C++面试宝典第20题:计算岛屿数量

这篇具有很好参考价值的文章主要介绍了C++面试宝典第20题:计算岛屿数量。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

        在二维网格地图上,'1' 表示陆地,'0' 表示水域。如果相邻的陆地可以水平或垂直连接,则它们属于同一块岛屿。请进行编码,统计地图上的岛屿数量。比如:下面的二维网格地图,其岛屿数量为3。

C++面试宝典第20题:计算岛屿数量,C++面试宝典100题,c++,面试,深度优先,广度优先,岛屿数量

解析

        这道题主要考察应聘者对深度优先搜索、广度优先搜索、二维数组和矩阵操作、边界条件判断、递归等知识点的理解和掌握。

        深度优先搜索:也就是Deep First Search,简称为DFS,这是一种用于遍历或搜索树或图的算法。对于每个节点,算法会尽可能深地搜索树的分支。当节点V的所在边都已被探寻过,搜索将回溯到发现节点V的那条边的起始节点,该过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个过程反复进行直到所有节点都被访问为止。在本题中,DFS用于搜索和标记相连的陆地。

        广度优先搜索:也就是Breadth First Search,简称为BFS,这也是一种用于遍历或搜索树或图的算法。首先,它从根节点开始,访问所有与根节点相邻的节点。然后,扩展到下一层邻接节点,直到找到目标节点或者遍历完整棵树或图。

        二维数组和矩阵操作:本题给出的地图是一个二维网格,需要使用二维数组来进行表示和操作。

        边界条件判断:在搜索过程中文章来源地址https://www.toymoban.com/news/detail-799778.html

到了这里,关于C++面试宝典第20题:计算岛屿数量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于岛屿的三道leetcode原题:岛屿周长、岛屿数量、统计子岛屿

    题1: 岛屿周长 给定一个 row x col 的二维网格地图 grid ,其中:gridi = 1 表示陆地, gridi = 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。 岛屿

    2024年02月10日
    浏览(52)
  • 16.3:岛屿数量问题2

    https://leetcode.cn/problems/number-of-islands-ii/ 给你一个大小为 m x n 的二进制网格 grid 。网格表示一个地图,其中, 0 表示水, 1 表示陆地。最初, grid 中的所有单元格都是水单元格(即,所有单元格都是 0 )。 可以通过执行 addLand 操作,将某个位置的水转换成陆地。给你一个数组

    2024年02月07日
    浏览(38)
  • leetcode—图 岛屿数量

    给你一个由  \\\'1\\\' (陆地)和  \\\'0\\\' (水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 深度优先遍历 网格问题的基本概念 避免重复

    2024年01月25日
    浏览(43)
  • 力扣200. 岛屿数量

    思路: 假设在 (r, c) 格子位置,r 为所处行,c 为所处的列; 遇到陆地格子之后,遍历搜索其上下左右周围的陆地格子,但是不能超出边界,即对应的数组下标不越界; 为了避免重复多次搜索,搜索到陆地格子之后将其标记染色; 四周搜索完所有的陆地格子,即为一个岛屿;

    2024年02月04日
    浏览(45)
  • Leetcode 200. 岛屿数量

    心路历程: 在没有看图论这一章之前看这道题没什么直接的思路,在看完图论之后,学着使用DFS和BFS去套用解决。第一次自己做的时候还是遇到了很多小问题。整体思路很流畅,但是需要处理的细节第一次没怎么处理好,花了很多时间去思考图中的回溯和常规组合/子集回溯

    2024年03月22日
    浏览(47)
  • 【图论】Leetcode 200. 岛屿数量【中等】

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

    2024年04月15日
    浏览(45)
  • 岛屿数量 -- 二维矩阵的dfs算法

    岛屿数量 又被称为 FloodFill 算法

    2024年02月09日
    浏览(42)
  • 云计算(虚拟化)面试宝典

    1.名词解释 (1)资源动态调整(对象是虚拟机) 管理员操作,对CPU、内存、网卡、硬盘、GPU进行调整。 FusionCompute支持虚拟机资源动态调整,用户可以根据业务负载动态调整资源的使用情况。 虚拟机资源调整包括: 离线/在线调整vCPU数目 无论虚拟机处于离线(关机)或在线

    2024年02月09日
    浏览(44)
  • 力扣真题:200. 岛屿数量(两种实现方法)

     java代码实现: 用了类似感染的方法,就是一个节点出发,如果此时这个节点没被感染,且是陆地,就可以进入遍历,将其邻接的陆地全部遍历一遍,标志数组sign相应位置至为1.然后一次遍历一块陆地,能遍历几次就代表有几块陆地。 这种方法相较于第一种有了不错的优化

    2024年02月14日
    浏览(46)
  • C++面试宝典第19题:最长公共前缀

    题目         编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串\\\"\\\"。说明:所有输入只包含小写字母a-z。         示例1:         示例2: 解析         最长公共前缀(Longest Common Prefix)是计算机科学中一个常见的问题,它

    2024年01月19日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包