![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 78
图
gyjllll
这个作者很懒,什么都没留下…
展开
-
广度优先搜索理论基础
我们从图中可以看出,从start起点开始,是一圈一圈,向外搜索,方格编号1为第一步遍历的节点,方格编号2为第二步遍历的节点,第四步的时候我们找到终止点end。我们用一个方格地图,假如每次搜索的方向为 上下左右(不包含斜上方),那么给出一个start起始位置,那么BFS就是从四个方向走出第一步。大家应该好奇,这一圈一圈的搜索过程是怎么做到的,是放在什么容器里,才能这样去遍历。上面我们提过,BFS是一圈一圈的搜索过程,但具体是怎么一圈一圈来搜呢。当然,也有一些问题是广搜 和 深搜都可以解决的,例如岛屿问题,原创 2024-02-06 21:45:39 · 308 阅读 · 0 评论 -
深度优先搜索理论基础
又找到了一条从节点1到节点6的路径,又到黄河了,此时再回头,下图图五,路径6撤销(回溯的过程),改为路径7,路径8 和 路径7,路径9, 结果发现死路一条,都走到了自己走过的节点。那么节点2所连接路径和节点3所链接的路径 都走过了,撤销路径只能向上回退,去选择撤销当初节点4的选择,也就是撤销路径5,改为路径10。又找到了一条从节点1到节点6的路径,又到黄河了,此时再回头,下图图四中,路径4撤销(回溯的过程),改为路径5。此时我们找到了节点6,(遇到黄河了,是不是应该回头了),那么应该再去搜索其他方向了。原创 2024-02-06 21:44:36 · 880 阅读 · 0 评论 -
685. 冗余连接 II(困难)
在本问题中,有根树指满足以下条件的图。该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。输入一个有向图,该图由一个有着n个节点(节点值不重复,从1到n)的树及一条附加的有向边构成。附加的边包含在1到n中的两个不同顶点间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组edges。每个元素是一对[ui, vi],用以表示图中连接顶点ui和顶点vi的边,其中ui是vi的一个父节点。原创 2024-02-06 21:41:32 · 909 阅读 · 0 评论 -
684. 冗余连接
树可以看成是一个连通且的图。给定往一棵n个节点 (节点值1~n) 的树中添加一条边后的图。添加的边的两个顶点包含在1到n中间,且这条附加的边不属于树中已存在的边。图的信息记录于长度为n的二维数组edges表示图中在ai和bi之间存在一条边。请找出一条可以删去的边,删除后可使得剩余部分是一个有着n个节点的树。如果有多个答案,则返回数组edges中最后出现的那个。[2,3][1,4]原创 2024-02-06 20:43:13 · 325 阅读 · 0 评论 -
1971. 寻找图中是否存在路径
有一个具有n个顶点的图,其中每个顶点标记从0到n - 1(包含0和n - 1图中的边用一个二维整数数组edges表示,其中表示顶点ui和顶点vi之间的双向边。每个顶点对由边连接,并且没有顶点存在与自身相连的边。请你确定是否存在从顶点source开始,到顶点结束的。给你数组edges和整数nsource和,如果从source到存在,则返回true,否则返回false。true存在由顶点 0 到顶点 2 的路径:- 0 → 2false不存在由顶点 0 到顶点 5 的路径.原创 2024-02-06 20:08:12 · 303 阅读 · 0 评论 -
并查集理论
在第一次查询的时候,相当于是n叉树上从叶子节点到根节点的查询过程,时间复杂度是logn,但路径压缩后,后面的查询操作都是O(1),而 join 函数 和 isSame函数 里涉及的查询操作也是一样的过程。也就是说,无论使用并查集模板里哪一个函数(除了init函数),都会有路径压缩的过程,第二次访问相同节点的时候,这个节点就是直连根节点的,即 第一次访问的时候它的路径就被压缩了。在实现 find 函数的过程中,我们知道,通过递归的方式,不断获取father数组下标对应的数值,最终找到这个集合的根。原创 2024-02-06 15:24:14 · 824 阅读 · 0 评论 -
463. 岛屿的周长
给定一个row x col的二维网格地图grid表示陆地,表示水域。网格中的格子方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100。计算这个岛屿的周长。16它的周长是上面图片中的 16 个黄色的边4401。原创 2024-02-06 12:34:57 · 376 阅读 · 0 评论 -
841. 钥匙和房间
有n个房间,房间按从0到n - 1编号。最初,除0号房间外的其余所有房间都被锁住。你的目标是进入所有的房间。然而,你不能在没有获得钥匙的时候进入锁住的房间。当你进入一个房间,你可能会在里面找到一套不同的钥匙,每把钥匙上都有对应的房间号,即表示钥匙可以打开的房间。你可以拿上所有钥匙去解锁其他房间。给你一个数组rooms其中rooms[i]是你进入i号房间可以获得的钥匙集合。如果能进入房间返回true,否则返回false。true我们从 0 号房间开始,拿到钥匙 1。原创 2024-02-06 12:01:17 · 785 阅读 · 0 评论 -
127. 单词接龙(困难)
字典wordList中从单词beginWord和endWord的是一个按下述规格形成的序列siwordListbeginWordwordList给你两个单词beginWord和endWord和一个字典wordList,返回从beginWord到endWord的中的。如果不存在这样的转换序列,返回0。5一个最短转换序列是 "hit" -> "hot" -> "dot" -> "dog" -> "cog", 返回它的长度 5。0endWord "cog" 不在字典中,所以无法进行转换。原创 2024-02-06 11:08:43 · 318 阅读 · 0 评论 -
827. 最大人工岛(困难)
给你一个大小为n x n二进制矩阵grid。只能将一格0变成1。返回执行此操作后,grid中最大的岛屿面积是多少?由一组上、下、左、右四个方向相连的1形成。3将一格0变成1,最终连通两个小岛得到面积为 3 的岛屿。grid =4将一格0变成1,岛屿的面积扩大为 4。4没有0可以让我们变成1,面积依然为 4。01。原创 2024-02-05 19:01:02 · 377 阅读 · 0 评论 -
417. 太平洋大西洋水流问题
有一个m × n的矩形岛屿,与和相邻。处于大陆的左边界和上边界,而处于大陆的右边界和下边界。这个岛被分割成一个由若干方形单元格组成的网格。给定一个m x n的整数矩阵heights表示坐标(r, c)上单元格。岛上雨水较多,如果相邻单元格的高度当前单元格的高度,雨水可以直接向北、南、东、西流向相邻单元格。水可以从海洋附近的任何单元格流入海洋。返回网格坐标result的,其中表示雨水从单元格(ri, ci)流动。原创 2024-02-05 16:17:16 · 812 阅读 · 0 评论 -
130. 被围绕的区域
给你一个m x n的矩阵board,由若干字符'X'和'O',找到所有被'X'围绕的区域,并将这些区域里所有的'O'用'X'填充。被围绕的区间不会存在于边界上,换句话说,任何边界上的'O'都不会被填充为'X'。任何不在边界上,或不与边界上的'O'相连的'O'最终都会被填充为'X'。如果两个元素在水平或垂直方向相邻,则称它们是“相连”的。原创 2024-02-05 14:48:31 · 361 阅读 · 0 评论 -
1254. 统计封闭岛屿的数目
这道题和岛屿数量差不多,但是本题要求是封闭的才算,因此在搜索的时候需要加一个标志位判断这次搜索能否到边界,如果边界有陆地证明这次搜索的连通区域不是封闭岛屿。要注意如果在某次搜索过程中,判断出不封闭,不要结束搜索,仍要进行继续遍历,要把和这个边界连着的所有零都置成1,以便下次搜索。这道题就是去搜索数字0,要将搜索到的0变成1,这样这次搜索完毕后,下次搜索可以避免重复搜到一样的。灰色区域的岛屿是封闭岛屿,因为这座岛屿完全被水域包围(即被 1 区域包围)。由1包围(左、上、右、下)的岛。组成的群,封闭岛是一个。原创 2024-02-05 13:56:52 · 327 阅读 · 0 评论 -
1020. 飞地的数量
给你一个大小为m x n的二进制矩阵grid,其中0表示一个海洋单元格、1表示一个陆地单元格。一次是指从一个陆地单元格走到另一个相邻()的陆地单元格或跨过grid的边界。返回网格中在任意次数的移动中离开网格边界的陆地单元格的数量。3有三个 1 被 0 包围。一个 1 没有被包围,因为它在边界上。0所有 1 都在边界上或可以到达边界。01。原创 2024-02-05 12:48:31 · 345 阅读 · 0 评论 -
695. 岛屿的最大面积
给你一个大小为m x n的二进制矩阵grid。是由一些相邻的1(代表土地) 构成的组合,这里的「相邻」要求两个1必须在相邻。你可以假设grid的四个边缘都被0(代表水)包围着。岛屿的面积是岛上值为1的单元格的数目。计算并返回grid中最大的岛屿面积。如果没有岛屿,则返回面积为0。6答案不应该是11,因为岛屿只能包含水平或垂直这四个方向上的1。001。原创 2024-02-05 11:02:54 · 321 阅读 · 0 评论 -
200. 岛屿数量
给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。原创 2024-02-05 10:28:03 · 840 阅读 · 0 评论 -
797. 所有可能的路径
给你一个有n个节点的,请你找出所有从节点0到节点n-1的路径并输出(graph[i]是一个从节点i可以访问的所有节点的列表(即从节点i到节点存在一条有向边)。有两条路径 0 -> 1 -> 3 和 0 -> 2 -> 3graph[i]原创 2024-02-04 21:58:13 · 373 阅读 · 0 评论