![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
广度优先搜索
文章平均质量分 69
yuzhang_zy
现在的我不是最好的我,未来的我才是最好的我,每一篇博客都记录着我的成长
展开
-
752 打开转盘锁(宽搜)
1. 问题描述:你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为'0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 '0000' ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。字符串 target 代表可以解.原创 2021-09-08 10:43:03 · 174 阅读 · 0 评论 -
675 为高尔夫比赛砍树(宽搜)
1. 问题描述:你被请来给一个要举办高尔夫比赛的树林砍树。树林由一个m x n 的矩阵表示, 在这个矩阵中:0 表示障碍,无法触碰1表示地面,可以行走比 1 大的数表示有树的单元格,可以行走,数值表示树的高度每一步,你都可以向上、下、左、右四个方向之一移动一个单位,如果你站的地方有一棵树,那么你可以决定是否要砍倒它。你需要按照树的高度从低向高砍掉所有的树,每砍过一颗树,该单元格的值变为 1(即变为地面)。你将从 (0, 0) 点开始工作,返回你砍完所有树需要走的最小步数。 如果你无法砍完所有的..原创 2021-08-03 16:59:49 · 257 阅读 · 0 评论 -
662 二叉树最大宽度(宽搜搜索每一层的节点)
1. 问题描述:给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。示例 1:输入: 1 / \ 3 2 / \ \ 5 3 9输出: 4解释: 最大值出现在...原创 2021-08-02 12:09:28 · 203 阅读 · 0 评论 -
637 二叉树的层平均值(宽搜)
1. 问题描述:给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例 1:输入: 3 / \ 9 20 / \ 15 7输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。提示:节点值的范围在32位有符号整数范围内。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/average-o...原创 2021-07-30 09:30:34 · 104 阅读 · 0 评论 -
623 在二叉树中增加一行(宽搜)
1. 问题描述:给定一个二叉树,根节点为第1层,深度为 1。在其第d层追加一行值为v的节点。添加规则:给定一个深度值 d (正整数),针对深度为 d - 1 层的每一非空节点 N,为 N 创建两个值为v的左子树和右子树。将N 原先的左子树,连接为新节点v 的左子树;将N 原先的右子树,连接为新节点v 的右子树。如果 d 的值为 1,深度 d - 1 不存在,则创建一个新的根节点 v,原先的整棵树将作为 v 的左子树。示例 1:输入:二叉树如下所示: 4 ...原创 2021-07-28 11:19:11 · 127 阅读 · 0 评论 -
542 01 矩阵(多源bfs)
1. 问题描述:给定一个由 0 和 1 组成的矩阵 mat,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:mat = [[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]]示例 2:输入:mat = [[0,0,0],[0,1,0],[1,1,1]]输出:[[0,0,0],[0,1,0],[1,2,1]]提示:m == mat.length.原创 2021-07-22 16:13:59 · 150 阅读 · 0 评论 -
513 找树左下角的值(dfs、bfs)
1. 问题描述:给定一个二叉树的根节点 root,请找出该二叉树的最底层最左边节点的值。假设二叉树中至少有一个节点。示例 1:输入: root = [2,1,3]输出: 1示例 2:输入: [1,2,3,4,null,5,6,null,null,7]输出: 7提示:二叉树的节点个数的范围是 [1,10 ^ 4]-2 ^ 31<= Node.val <= 2 ^ 31- 1来源:力扣(LeetCode)链接:https://leetcode-cn....原创 2021-07-17 21:29:38 · 160 阅读 · 0 评论 -
蓝桥杯跳蚱蜢(bfs-取余操作模拟滚动的过程)
1. 问题描述:如图所示:有9只盘子,排成1个圆圈。其中8只盘子内装着8只蚱蜢,有一个是空盘。我们把这些蚱蜢顺时针编号为 1~8。每只蚱蜢都可以跳到相邻的空盘中,也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。 请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列,并且保持空盘的位置不变(也就是1-8换位,2-7换位,...),至少要经过多少次跳跃?输出输出一个整数表示答案来源:http://oj.ecustacm.cn/problem.php?id=13182. 思路分析:...原创 2021-04-16 10:17:12 · 293 阅读 · 0 评论 -
蓝桥杯扩散(多源bfs)
1. 问题描述:小蓝在一张无限大的特殊画布上作画。这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示。小蓝在画布上首先点了一下几个点:(0, 0), (2020, 11), (11, 14), (2000, 2000)。只有这几个格子上有黑色,其它位置都是白色的。每过一分钟,黑色就会扩散一点。具体的,如果一个格子里面是黑色,它就会扩散到上、下、左、右四个相邻的格子中,使得这四个格子也变成黑色(如果原来就是黑色,则还是黑色)。请问,经过 2020分钟后,画布上有多少个格子是黑色的。2.原创 2021-04-09 22:06:10 · 1569 阅读 · 4 评论 -
第十届蓝桥杯C语言A组-迷宫(bfs 双端队列)
1. 问题描述:下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。 对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫, 一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。 对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式, 其使用的步数最少,在步原创 2021-03-21 16:27:45 · 740 阅读 · 2 评论 -
542 01 矩阵(单源bfs、多源bfs)
1. 问题描述:给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:[[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]]示例 2:输入:[[0,0,0],[0,1,0],[1,1,1]]输出:[[0,0,0],[0,1,0],[1,2,1]]提示:给定矩阵的元素个数不超过 10000。 给定矩阵中至少有一个元素是 0...原创 2020-12-05 16:45:13 · 295 阅读 · 0 评论 -
513 找树左下角的值(dfs、bfs)
1. 问题描述:给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出:1示例 2:输入: 1 / \ 2 3 / / \ 4 5 6 / 7输出:7注意:您可以假设树(即给定的根节点)不为NULL。来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob...原创 2020-12-02 10:58:58 · 156 阅读 · 0 评论 -
863 二叉树中所有距离为 K 的结点(dfs + bfs)
1. 问题描述:给定一个二叉树(具有根结点root),一个目标结点target,和一个整数值 K 。返回到目标结点 target 距离为 K 的所有结点的值的列表。 答案可以以任何顺序返回。示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, K = 2输出:[7,4,1]解释:所求结点为与目标结点(值为 5)距离为 2 的结点,值分别为 7,4,以及 1注意,输入的 "root" 和 "target" 实际上...原创 2020-12-01 21:48:01 · 201 阅读 · 0 评论 -
199 二叉树的右视图(bfs)
1. 问题描述:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入:[1,2,3,null,5,null,4]输出:[1, 3, 4]解释: 1 <---/ \2 3 <---\ \ 5 4 <---来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary...原创 2020-11-29 09:27:59 · 160 阅读 · 0 评论 -
934 最短的桥(dfs标记 + bfs搜索最短路径)
1. 问题描述:在给定的二维二进制数组A中,存在两座岛。(岛是由四面相连的 1 形成的一个最大组。)现在,我们可以将0变为1,以使两座岛连接起来,变成一座岛。返回必须翻转的0 的最小数目。(可以保证答案至少是 1)示例 1:输入:[[0,1],[1,0]]输出:1示例 2:输入:[[0,1,0],[0,0,0],[0,0,1]]输出:2示例 3:输入:[[1,1,1,1,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,0,0,1],[1,1,1,1...原创 2020-11-21 22:02:44 · 263 阅读 · 0 评论 -
1654 到家的最少跳跃次数(bfs)
1. 问题描述:有一只跳蚤的家在数轴上的位置x处。请你帮助它从位置0出发,到达它的家。跳蚤跳跃的规则如下:它可以往前跳恰好 a个位置(即往右跳)。它可以往后跳恰好 b个位置(即往左跳)。它不能连续往后跳 2 次。它不能跳到任何forbidden数组中的位置。跳蚤可以往前跳超过它的家的位置,但是它不能跳到负整数的位置。给你一个整数数组forbidden,其中forbidden[i]是跳蚤不能跳到的位置,同时给你整数a,b和x,请你返回跳蚤到家的最少跳跃次数。如...原创 2020-11-20 10:38:06 · 2484 阅读 · 0 评论 -
365 水壶问题(广度优先搜索、数学推导-裴蜀定理)
1. 问题描述:有两个容量分别为x升和 y升的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好z升的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的z升水。、你允许:装满任意一个水壶 清空任意一个水壶 从一个水壶向另外一个水壶倒水,直到装满或者倒空示例 1:(From the famous"Die Hard"example)输入: x = 3, y = 5, z = 4输出: True示例 2:输入: x = 2, y = 6, z = 5...原创 2020-11-07 17:32:02 · 861 阅读 · 0 评论 -
1315 祖父节点值为偶数的节点和(dfs-自下往上处理、bfs)
1. 问题描述:给你一棵二叉树,请你返回满足以下条件的所有节点的值之和:该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。)如果不存在祖父节点值为偶数的节点,那么返回0 。示例:输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]输出:18解释:图中红色节点的祖父节点的值为偶数,蓝色节点为这些红色节点的祖父节点。提示:树中节点的数目在1到10^4之间。 每个节点的值在1到100之间...原创 2020-11-06 20:50:01 · 154 阅读 · 0 评论 -
1609 奇偶树(广度优先遍历)
1. 问题描述:如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 :二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。偶数下标层上的所有节点的值都是奇整数,从左到右按顺序严格递增奇数下标层上的所有节点的值都是偶整数,从左到右按顺序严格递减给你二叉树的根节点,如果二叉树为奇偶树 ,则返回 true ,否则返回 false示例 1:输入:root = [1,10,4,3,null,7,9,12,8,6,null,null,2]输出:.原创 2020-10-12 09:44:08 · 365 阅读 · 0 评论 -
279 完全平方数(bfs)
1. 问题描述:给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于n。你需要让组成和的完全平方数的个数最少示例1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.2. 思路分析:① 一开始我想到的是dfs搜索所有可能的组合的方法去解决的,看了一下领扣的题解之后发现可以使用bfs来解决,对于bfs思路解决都是类似的解题套路,需要借助于队...原创 2020-09-02 20:05:15 · 337 阅读 · 0 评论 -
1306 跳跃游戏 III(dfs、bfs)
1. 问题描述:这里有一个非负整数数组arr,你最开始位于该数组的起始下标start处。当你位于下标i处时,你可以跳到i + arr[i] 或者 i - arr[i]。请你判断自己是否能够跳到对应元素值为 0 的 任意 下标处。注意,不管是什么情况下,你都无法跳到数组之外。示例 1:输入:arr = [4,2,3,0,3,1,2], start = 5输出:true解释:到达值为 0 的下标 3 有以下可能方案:下标 5 -> 下标 4 -> 下标 1 ...原创 2020-06-14 23:10:33 · 281 阅读 · 0 评论 -
139 单词拆分(递归、宽搜)
1. 问题描述:题目链接为:https://leetcode-cn.com/problems/word-break/给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDi...原创 2020-03-10 19:05:37 · 317 阅读 · 0 评论 -
101 对称二叉树(递归、宽搜)
1. 问题描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和迭代两...原创 2020-03-27 16:52:58 · 168 阅读 · 0 评论 -
1162 地图分析(bfs)
1. 问题描述:你现在手里有一份大小为N x N 的「地图」(网格)grid,上面的每个「区域」(单元格)都用0和1标记好了。其中0代表海洋,1代表陆地,请你找出一个海洋区域,这个海洋区域到离它最近的陆地区域的距离是最大的。我们这里说的距离是「曼哈顿距离」(Manhattan Distance):(x0, y0) 和(x1, y1)这两个区域之间的距离是|x0 -...原创 2020-03-30 17:39:33 · 307 阅读 · 0 评论 -
55 跳跃游戏(bfs)
1. 问题描述:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例2:输入: [3,2,1,0,4]输出: false...原创 2020-04-06 23:45:40 · 234 阅读 · 0 评论 -
127 单词接龙(宽搜)
1. 问题描述:给定两个单词(beginWord和 endWord)和一个字典,找到从beginWord 到endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 begin...原创 2020-03-25 00:02:58 · 184 阅读 · 0 评论 -
752 打开转盘锁(宽搜)
1. 问题描述:你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为'0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 '0000' ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一...原创 2020-03-24 15:49:35 · 279 阅读 · 0 评论 -
青蛙跳杯子(bfs)
1. 问题描述:X星球的流行宠物是青蛙,一般有两种颜色:白色和黑色。X星球的居民喜欢把它们放在一排茶杯里,这样可以观察它们跳来跳去。如下图,有一排杯子,左边的一个是空着的,右边的杯子,每个里边有一只青蛙。*WWWBBB,其中,W字母表示白色青蛙,B表示黑色青蛙,*表示空杯子。X星的青蛙很有些癖好,它们只做3个动作之一:1. 跳到相邻的空杯子里。2. 隔着1只其它的青蛙(随便什么颜色)跳到...原创 2020-03-16 00:23:28 · 556 阅读 · 1 评论 -
迷宫(dfs与bfs)
1. 问题描述:【问题描述】下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这个它的上、下、左、右四个方向之一。对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫,一共 10 步。其中 D、 U、 L、 R 分别表示...原创 2020-03-05 19:06:19 · 988 阅读 · 0 评论 -
起点到终点的最少步数(广度优先搜索)
1. 问题描述:给定一个n * m大小的迷宫,其中*代表不可通过的墙壁,而.代表平地,S表示起点,T表示终点,移动过程中,如果当前位置是(x,y)(下标从0开始),而且每次只能前往上下左右(x,y + 1)(x,y -1)(x - 1,y)(x + 1,y)四个位置的平地,求从起点S到达终点T的最少步数......*.*..*S*..***....T*2. 思路分析:①...原创 2019-06-30 18:27:50 · 2657 阅读 · 0 评论 -
广度优先搜索
1. 在对树的操作中可能经常要使用到宽度优先搜索,例如寻找某棵树的某一层的所有节点就需要使用到宽度优先搜索,还有就是像分酒,迷宫这些问题都可以使用到宽搜来解决,这些往往会涉及到从开始状态到目标状态的转换,而且经过一次操作从一个状态转换到另外一个状态,往往求解的是最短的路径或者最少的步骤宽搜属于层次的遍历,进行一层一层的寻找,主要需要经过以下几个方面的操作:① 把根节点放到队列的末尾② ...原创 2019-02-21 14:04:17 · 321 阅读 · 0 评论 -
判断矩阵块的数目(广度优先搜索)
1. 问题描述:给出一个n * m的矩阵,矩阵中的元素为0或1,称位置(x,y)与其上下左右四个位置(x,y + 1)、(x,y - 1)、(x + 1,y)、(x - 1,y)是相邻的,如果矩阵中有若干个1是相邻的(不必两两相邻),那么称这些组成了一个块,求给定的矩阵中块的数目例如下面的例子6 * 7的矩阵中,块的数目是4:0 1 1 1 0 0 10 0 1 0 0 0 00...原创 2019-06-26 11:40:14 · 958 阅读 · 0 评论 -
完全平方数(广度优先搜索)
1. 问题描述:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n,你需要让组成和的完全平方数的个数最少2. 思路分析:① 我们可以这样想对于当前需要凑的数我们可以依次去尝试减去1的平方、2的平方、3的平方、4的平方...n的平方,而且我们应该知道n应该是小于等于n开根号的,假如凑不出来我们应该继续上面的步骤,但是我们应该将当前...原创 2019-04-23 19:44:00 · 3533 阅读 · 2 评论 -
九宫重排(广度优先搜索)
1. 问题描述:问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面。 我们把第一个图的局面记为:12345678. 把第二个图的局面记为:123.46758 显然是按从上到下,从左到右的顺序记录数字,空格记为句点。 本题目的任务是已知九宫的初态和终态,求最...原创 2019-03-09 10:41:15 · 5939 阅读 · 0 评论 -
迷宫问题(广度优先搜索)
1. 问题描述:输入:第一行输入迷宫的行与列,第二行输入迷宫输出:走出迷宫的最少步数下面是具体的例子:...1111111111111111111111111111111.111111........1111111111.111111.111111..111.11111111.....111111.11111111111.1111111111.111111...原创 2019-03-04 07:51:32 · 1524 阅读 · 0 评论 -
分红酒(广度优先搜索)
1. 题目描述:有4个红酒瓶子,它们的容量分别是:9升, 7升, 4升, 2升 开始的状态是 [9,0,0,0],也就是说:第一个瓶子满着,其它的都空着。 允许把酒从一个瓶子倒入另一个瓶子,但只能把一个瓶子倒满或把一个瓶子倒空,不能有中间状态。这样的一次倒酒动作称为1次操作。 假设瓶子的容量和初始状态不变,对于给定的目标状态,至少需要多少次操作才能实现? 本题就是要求你...原创 2019-02-21 13:40:48 · 336 阅读 · 0 评论