
宽度优先搜索
文章平均质量分 71
SeeDoubleU
这个作者很懒,什么都没留下…
展开
-
宽度优先搜索算法总结
文章目录宽度优先搜索能够处理的问题代码注意事项时间复杂度分析题目汇总宽度优先搜索能够处理的问题宽度优先搜索的对象一般是二叉树、图、矩阵,这三种其实都可以归类为图,使用宽度优先搜索的情况有以下三种:按层遍历。(level order traversal)简单图的最短路径问题,简单图——边的权值为1的无向图。由点及面。(connected component)扩散、传播、感染类型的问题。拓扑排序。(topological sorting)节点之间存在相互依赖关系的有向图的拓扑问题原创 2022-04-26 00:57:49 · 1698 阅读 · 0 评论 -
33 单词接龙(Word Ladder)
文章目录1 题目2 解决方案2.1 思路2.2 图解2.2 时间复杂度2.3 空间复杂度3 源码1 题目题目:单词接龙(Word Ladder)描述:给出两个单词(start和end)和一个字典,找出从start到end的最短转换序列,输出最短序列的长度。变换规则如下:每次只能改变一个字母。变换过程中的中间单词必须在字典中出现。(起始单词和结束单词不需要出现在字典中)如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 b原创 2022-04-25 01:07:40 · 591 阅读 · 0 评论 -
32 骑士的最短路线(Knight Shortest Path)
文章目录1 题目2 解决方案2.1 思路2.2 时间复杂度2.3 空间复杂度3 源码1 题目题目:骑士的最短路线(Knight Shortest Path)描述:给定骑士在棋盘上的 初始 位置(一个2进制矩阵 0 表示空 1 表示有障碍物),找到到达 终点 的最短路线,返回路线的长度。如果骑士不能到达则返回 -1 。起点跟终点必定为空.骑士不能碰到障碍物.路径长度指骑士走的步数.如果骑士的位置为 (x,y),他下一步可以到达以下这些位置:(x + 1, y + 2)(x +原创 2022-04-25 01:07:05 · 556 阅读 · 0 评论 -
31 僵尸矩阵(Zombie In Matrix)
文章目录1 题目2 解决方案2.1 思路2.2 时间复杂度2.3 空间复杂度3 源码1 题目题目:僵尸矩阵(Zombie In Matrix)描述:给一个二维网格,每一个格子都有一个值,2 代表墙,1 代表僵尸,0 代表人类(数字 0, 1, 2)。僵尸每天可以将上下左右最接近的人类感染成僵尸,但不能穿墙。将所有人类感染为僵尸需要多久,如果不能感染所有人则返回 -1。lintcode题号——598,难度——medium样例1:输入:[[0,1,2,0,0], [1,0,0,2,1],原创 2022-04-25 01:06:31 · 422 阅读 · 0 评论 -
30 计算岛屿的个数(Number of Islands)
文章目录1 题目2 解决方案2.1 思路2.2 时间复杂度2.3 空间复杂度3 源码1 题目题目:拓扑排序(Topological Sorting)描述:给定一个有向图,图节点的拓扑排序定义如下:对于图中的每一条有向边 A -> B,在拓扑排序中A一定在B之前;拓扑排序中的第一个节点可以是图中的任何一个没有其他节点指向它的节点。针对给定的有向图找到任意一种拓扑排序的顺序。lintcode题号——127,难度——medium样例1:输入:graph = {0,1,2,3#1,4#2,4,原创 2022-04-25 01:05:51 · 691 阅读 · 0 评论 -
29 拓扑排序(Topological Sorting)
文章目录1 题目2 解决方案2.1 思路2.2 时间复杂度2.3 空间复杂度3 源码1 题目题目:计算岛屿的个数(Number of Islands)描述:给一个 01 矩阵,求不同的岛屿的个数。0 代表海,1 代表岛,如果两个 1 相邻,那么这两个 1 属于同一个岛。我们只考虑上下左右为相邻。lintcode题号——433,难度——easy样例1:输入:[ [1,1,0,0,0], [0,1,0,0,1], [0,0,0,1,1], [0,0,0,0,0], [0,0原创 2022-04-25 01:05:01 · 616 阅读 · 0 评论 -
28 克隆图(Clone Graph)
文章目录1 题目2 解决方案2.1 思路2.2 时间复杂度2.3 空间复杂度3 源码1 题目题目:克隆图(Clone Graph)描述:克隆一张无向图。无向图的每个节点包含一个 label 和一个列表 neighbors。保证每个节点的 label 互不相同。程序需要返回一个经过深度拷贝的新图。新图和原图具有同样的结构, 并且对新图的任何改动不会对原图造成任何影响。lintcode题号——137,难度——medium样例1:输入:{1,2,4#2,1,4#4,1,2}输出: {1,2,原创 2022-04-25 01:04:28 · 452 阅读 · 0 评论 -
27 验证给定的图是否构成有效的树(Graph Valid Tree)
文章目录1 题目2 解决方案2.1 思路2.2 时间复杂度2.4 空间复杂度3 源码1 题目题目:验证给定的图是否构成有效的树(Graph Valid Tree)描述:给出 n 个节点,标号分别从 0 到 n - 1 并且给出一个无向边的列表 (给出每条边的两个顶点), 写一个函数去判断这张无向图是否是一棵树。假设列表中没有重复的边。无向边[0, 1] 和 [1, 0]是同一条边, 因此它们不会同时出现在列表中。lintcode题号——178,难度——medium样例1:输入: n = 5原创 2022-04-25 01:03:45 · 410 阅读 · 0 评论 -
26 将二叉树按照层级转化为链表(Convert Binary Tree to Linked Lists by Depth)
文章目录1 题目2 解决方案2.1 思路2.2 时间复杂度2.3 空间复杂度3 源码1 题目题目:将二叉树按照层级转化为链表(Convert Binary Tree to Linked Lists by Depth)描述:给一棵二叉树,设计一个算法为每一层的节点建立一个链表。也就是说,如果一棵二叉树有 D 层,那么你需要创建 D 条链表。lintcode题号——242,难度——easy样例1:输入: {1,2,3,4}输出: [1->null,2->3->null,4-&原创 2022-04-25 01:03:03 · 376 阅读 · 0 评论 -
25 二叉树的层级遍历(Binary Tree Level Order Traversal)
文章目录1 题目2 解决方案2.1 思路2.2 时间复杂度2.3 空间复杂度3 源码1 题目题目:二叉树的层级遍历(Binary Tree Level Order Traversal)描述:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)lintcode题号——69,难度——easy样例1:输入:tree = {1,2,3}输出:[[1],[2,3]]解释: 1 / \ 2 3 它将被序列化为{1,2,3}样例2:输入:tree = {1,#,2,3原创 2022-04-25 00:54:02 · 643 阅读 · 0 评论