BFS与DFS
文章平均质量分 55
为有牺牲多壮志
这个作者很懒,什么都没留下…
展开
-
队列与栈复习IV-127. 单词接龙
127. 单词接龙字典wordList 中从单词 beginWord和 endWord 的 转换序列 是一个按下述规格形成的序列:序列中第一个单词是 beginWord 。序列中最后一个单词是 endWord 。每次转换只能改变一个字母。转换过程中的中间单词必须是字典wordList 中的单词。给你两个单词 beginWord和 endWord 和一个字典 wordList ,找到从beginWord 到endWord 的 最短转换序列 中的 单词数目 。如果不存在这样的转换序列...原创 2022-01-25 17:29:30 · 361 阅读 · 0 评论 -
LeetCode2045. 到达目的地的第二短时间
2045. 到达目的地的第二短时间城市用一个 双向连通 图表示,图中有 n 个节点,从 1 到 n 编号(包含 1 和 n)。图中的边用一个二维整数数组 edges 表示,其中每个 edges[i] = [ui, vi] 表示一条节点 ui 和节点 vi 之间的双向连通边。每组节点对由 最多一条 边连通,顶点不存在连接到自身的边。穿过任意一条边的时间是 time 分钟。每个节点都有一个交通信号灯,每 change 分钟改变一次,从绿色变成红色,再由红色变成绿色,循环往复。所有信号灯都 同时 改变。你原创 2022-01-24 23:01:17 · 299 阅读 · 0 评论 -
队列与栈复习I
133. 克隆图给你无向连通图中一个节点的引用,请你返回该图的深拷贝(克隆)。图中的每个节点都包含它的值val(int) 和其邻居的列表(list[Node])。class Node { public int val; public List<Node> neighbors;}深拷贝就是新建一个对象,和源对象的任何属性都相同,只是在内存中的地址不同,然后返回这个对象;浅拷贝就是用一个新指针指向源对象深拷贝也就是克隆,我们要新建对象,赋值,同时还...原创 2022-01-20 23:12:04 · 280 阅读 · 0 评论 -
LeetCode752. 打开转盘锁(BFS)
752. 打开转盘锁你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为'0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 '0000' ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。字符串 tar..原创 2022-01-19 23:51:52 · 164 阅读 · 0 评论 -
LeetCode1036. 逃离大迷宫(BFS)
1036. 逃离大迷宫在一个 106 x 106 的网格中,每个网格上方格的坐标为 (x, y) 。现在从源方格 source = [sx, sy] 开始出发,意图赶往目标方格 target = [tx, ty] 。数组 blocked 是封锁的方格列表,其中每个 blocked[i] = [xi, yi] 表示坐标为 (xi, yi) 的方格是禁止通行的。每次移动,都可以走到网格中在四个方向上相邻的方格,只要该方格 不 在给出的封锁列表 blocked 上。同时,不允许走出网格。只有在可.原创 2022-01-12 17:55:57 · 318 阅读 · 0 评论 -
LeetCode 306. 累加数(回溯+剪枝)
306. 累加数累加数 是一个字符串,组成它的数字可以形成累加序列。一个有效的 累加序列 必须 至少 包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。给你一个只包含数字'0'-'9'的字符串,编写一个算法来判断给定输入是否是 累加数 。如果是,返回 true ;否则,返回 false 。说明:累加序列里的数,除数字 0 之外,不会 以 0 开头,所以不会出现1, 2, 03 或者1, 02, 3的情况。class Solution {...原创 2022-01-11 22:39:50 · 189 阅读 · 0 评论 -
LeetCodeDFS游戏-祖玛游戏&扫雷游戏
488. 祖玛游戏(回溯)你正在参与祖玛游戏的一个变种。在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'、黄色 'Y'、蓝色 'B'、绿色 'G' 或白色 'W' 。你的手中也有一些彩球。你的目标是 清空 桌面上所有的球。每一回合:从你手上的彩球中选出 任意一颗 ,然后将其插入桌面上那一排球中:两球之间或这一排球的任一端。接着,如果有出现 三个或者三个以上 且 颜色相同 的球相连的话,就把它们移除掉。如果这种移除操作同样导致出现三个或者三个以上且颜色相同的球相原创 2022-01-16 23:52:52 · 208 阅读 · 0 评论 -
LeetCode回溯专题-46全排列
46. 全排列给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。public class Solution { public List<List<Integer>> permute(int[] nums) { int len = nums.length; // 使用一个动态数组保存所有可能的全排列 List<List<Integer>> res ...原创 2021-12-11 12:55:27 · 66 阅读 · 0 评论 -
LeetCode回溯专题-60. 排列序列&93. 复原 IP 地址
60. 排列序列给出集合[1,2,3,...,n],其所有元素共有n! 种排列。按大小顺序列出所有排列情况,并一一标记,当n = 3 时, 所有排列如下:"123""132""213""231""312""321"给定n 和k,返回第k个排列。方法一 找出全排列,按序排列,再根据下标找到所求值,参考class Solution { int cnt=0; public String getPermutation(int n, int ...原创 2022-01-08 22:25:15 · 1138 阅读 · 0 评论 -
LeetCode 1609 奇偶树(BFS)
1609. 奇偶树https://leetcode-cn.com/problems/even-odd-tree/如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 :二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减给你二叉树的根节点,如果二叉树为 奇偶树 ,则返回 true ,否则返回 false 。.原创 2021-12-25 21:40:53 · 202 阅读 · 0 评论 -
LeetCode851 喧闹和富有
851. 喧闹和富有https://leetcode-cn.com/problems/loud-and-rich/有一组 n 个人作为实验对象,从 0 到 n - 1 编号,其中每个人都有不同数目的钱,以及不同程度的安静值(quietness)。为了方便起见,我们将编号为x的人简称为 "personx"。给你一个数组 richer ,其中 richer[i] = [ai, bi] 表示 personai比 personbi更有钱。另给你一个整数数组 quiet ,其中quiet[i...原创 2021-12-15 12:37:56 · 84 阅读 · 0 评论 -
回溯算法1-LeetCode46
46. 全排列给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。题目理解:我们可以画一棵树,也即所谓决策树,我们分析这过程,从根节点开始进行DFS,往路径里加入当前节点,然后往下降一层递归DFS,完成每一轮DFS后都要将DFS前加入路径的节点删除,也即“回溯”的意义所在,一次次的回溯再递归,实际上也就是爆搜,完成了“全”排列的过程public class Solution { public List<List<In...原创 2021-12-13 20:20:34 · 187 阅读 · 0 评论 -
LeetCode 1162.地图分析(bfs)
1162. 地图分析你现在手里有一份大小为N x N 的 网格 grid,上面的每个 单元格 都用0和1标记好了。其中0代表海洋,1代表陆地,请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距离是最大的。我们这里说的距离是「曼哈顿距离」(Manhattan Distance):(x0, y0) 和(x1, y1)这两个单元格之间的距离是|x0 - x1| + |y0 - y1|。如果网格上只有陆地或者海洋,请返回-1。寻找最近距离,很自然的想到BF...原创 2021-12-08 13:00:41 · 251 阅读 · 0 评论