![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BFS
文章平均质量分 51
answer_yym
且随疾风前行
展开
-
腐烂的橘子md
1、BFS grid是一个二维数组,维护一个装坏橘子队列,和好橘子的sum,统计坏橘子的位置,存到点队列中。一分钟刷新一次队列,队列元素四周查看一边,更新四周,然后pop掉这个元素,等这一轮刷新完事之后,新的队列元素也在此过程中更新的出来,再更新时间再更新坏橘子的队列,等好橘子都没了的时候返回所求时间ret。等到队列没有坏橘子时,跳出循环,返回-1。3、 for(auto & dir:direction) // 是个循环dir和direction 是一样的变量,且是其中之一。如果不可能,返回 -1。原创 2024-07-10 09:22:14 · 271 阅读 · 0 评论 -
流通分量的_边框着色
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给你一个大小为 m x n 的整数矩阵 grid ,表示一个网格。另给你三个整数 row、col 和 color 。网格中的每个值表示该位置处的网格块的颜色。当两个网格块的颜色相同,而且在四个方向中任意一个方向上相邻时,它们属于同一 连通分量 。连通分量的边界 是指连通分量中的所有与不在分量中的网格块相邻(四个方向上)的所有网格块,或者在网格的边界上(第一行/列或最后一行/列)的所有网格块。请你使用指定颜色 color原创 2021-12-07 11:03:22 · 448 阅读 · 0 评论 -
接雨水二维数组
1、描述给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。来源2、关键字接雨水二维数组3、思路根据一维数组接雨水的思路,两边选两个边界,往里边填充,找到中间最大的,左边是一个单调不减数组,右边从右往左也是一个单调不减数组,左右两边同时往中间走,都到最高点就行了。这个二维,就是把周围一圈全部搞到小顶堆,然后根据周围的元素去更新“边界”:使用一个方向数组 dir[ 5 ]来遍历四周,使用一个visit标记有没有北方问过,原创 2021-11-03 16:12:26 · 883 阅读 · 0 评论 -
马走日,起点到终点的最短步数
1、描述2、思路广度优先,定义8个方向6、code#include<iostream>#include<queue>using namespace std;int dir[8][2]={{1,2},{2,1},{1,-2},{-2,1},{-1,2},{2,-1},{-2,-1},{-1,-2}};int vis[12][12]={0};using namespace std;struct point{ int x,y; int step原创 2021-09-19 18:20:38 · 909 阅读 · 0 评论 -
判断完全二叉树
1、描述判断完全二叉树3、思路通过层序遍历,定义一个标记,如果遇到nullptr就打个标记,下一次再遇到这个标记的时候就说明不是完全二叉树了。因为遇到nullptr之后,后边都不应该有元素了。6、code/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val原创 2021-09-18 12:44:15 · 106 阅读 · 0 评论 -
陆地填海啊
文章目录1、描述:11622、思路:3、notes4、复杂度5、code1、描述:1162你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。我们这里说的距离是『曼哈顿距离』( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个区域之间的距离是 |x0 - x1| + |y0原创 2021-09-13 21:56:12 · 133 阅读 · 0 评论 -
二维网格中起点能否到终点。
文章目录1、描述2、关键字,3、思路4、notes5、复杂度6、code1、描述2、关键字,二维数组,起点到终点,能否有路3、思路BFS,当遍历了网格上所有的点,之后如果有就找到了,如果没有就是到不了,4、notes1、方向数组,int direct[5] = { 0,1,0,-1,0 }; // 方向,2、点座标的队列,3、标记访问过没有的flag网格4、遍历每个队列元素的时候,都有4个方向上的统计。BFS,使用一个等大小二维数组来标记是否访问过5、复杂度时间:O(N)原创 2021-09-13 21:45:00 · 202 阅读 · 0 评论 -
打开转盘锁
1、描述你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。字符串 target 代表原创 2021-06-25 20:58:06 · 98 阅读 · 0 评论 -
求二叉树的最大、最小深度
1、描述输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关原创 2021-05-21 17:54:02 · 184 阅读 · 0 评论 -
多叉树的 前序、后序、层序遍历,非递归
1、描述590给定一个 N 叉树,返回其节点值的后序遍历。2、关键字N叉树,后序遍历3、思路前序遍历,stack,思考前序遍历是:根左右,后序遍历是:左右根如果把后序遍历根节点和孩子节点倒过来,就是和前序遍历类型一样了。而前序遍历是:左右, 后序遍历是右左,所以在处理孩纸节点时候,用stack暂存当前节点的孩子节点,输出逆置答案时,把stack弹出就好了,4、notes1、前序遍历就是队列,层序遍历也是队列,后序遍历就是用栈暂存逆序,最后结果序列再逆置一下2、层序遍历是取第一个元素,把原创 2020-07-15 22:39:33 · 786 阅读 · 0 评论 -
方板围棋吃子换001
1、描述130给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/surrounded-regions著作权归领扣网络所有。商业转载请联系官方授权,非原创 2020-09-16 10:29:14 · 143 阅读 · 0 评论 -
输出二叉树中所有距离为 K 的结点001
1、描述863给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 K 。返回到目标结点 target 距离为 K 的所有结点的值的列表。 答案可以以任何顺序返回。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/all-nodes-distance-k-in-binary-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字二叉树、距离、3、思路target节点,向下就原创 2020-09-06 22:16:45 · 222 阅读 · 1 评论 -
课程表顺序002
1、描述210现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例 1:输入: 2, [[1,0]]输出: [0,1]解释: 总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为原创 2020-09-04 22:22:20 · 436 阅读 · 0 评论 -
层级员工顺序访问
1、描述690给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id。比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是[2, 10, [3]],员工3的数据结构是[3, 5, []]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因此没有体现在员工1的数据结构中。现在输入一个公司的所有员工信息,以及单个员工id,返回这个员工和他所有下属的重要度之和。示例原创 2020-09-02 21:32:47 · 111 阅读 · 0 评论 -
二叉树的堂兄弟节点判断001
1、描述993在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root,以及树中两个不同节点的值 x 和 y。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true。否则,返回 false。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cousins-in-binary-tree著作权原创 2020-09-01 22:06:21 · 357 阅读 · 0 评论 -
返回N叉树的最大深度
1、描述给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。2、关键字N叉树,深度3、思路和之前的二叉树的最大深度一样,层序遍历BFS4、notes就是按照上一篇文章那样,BFS2层循环,3个部分N叉树,就是把左右孩纸变成了子树的序列,然后用for语句完成下一层队列的初始化工作就好了。复习:for语句使用;5、复杂度时间O(N):n是节点的个数,遍历所有的节点空间:O(N):n是节点的个数,当只有一个根节点时候是 O(N),当时有两层时,是原创 2020-09-01 21:00:30 · 193 阅读 · 0 评论 -
二叉树最大深度001
1、描述104给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3 。通过次数202,310提交次数274,5882、关键字二叉树,深度3、思路广度优先4、notes广度优先两层while循环结构,第一层只有求一个一层长度size,第二层再说队列的那个首位元素,5、复杂度时间:原创 2020-07-08 22:16:25 · 101 阅读 · 0 评论