![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bfs
卖山竹的山兔
这个作者很懒,什么都没留下…
展开
-
lc_bfs_542_updateMatrix
题目:01 矩阵 middle 给定一个由 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-07-09 12:43:21 · 287 阅读 · 1 评论 -
lc_bfs_529_updateBoard
题目:扫雷游戏 middle 让我们一起来玩扫雷游戏! 给定一个代表游戏板的二维字符矩阵。 'M' 代表一个未挖出的地雷,'E' 代表一个未挖出的空方块, 'B' 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块, 数字('1' 到 '8')表示有多少地雷与这块已挖出的方块相邻,'X' 则表示一个已挖出的地雷。 现在给出在所有未挖出的方块中('M'或者'E')的下一个点击位置(行和列索引), 根据以下规则,返回相应位置被点击后对应的面板: *如果一个地雷('M')被挖出,游戏就.原创 2020-07-06 18:40:57 · 77 阅读 · 0 评论 -
lc_bfs_515_largestValues
题目:在每个树行中找最大值 middle 您需要在二叉树的每一行中找到最大的值。 示例: 输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9] 思路: 经典bfs,只需再每层遍历时比较找出每层的最大值 package leetCode.BFS; import java.util.ArrayDeque; import java.util.ArrayList; imp...原创 2020-07-06 09:13:14 · 83 阅读 · 0 评论 -
lc_bfs_513_findBottomLeftValue
题目:找树左下角的值 middle 给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 输入: 2 / \ 1 3 输出:1 示例 2: 输入: 1 / \ 2 3 / / \ 4 5 6 / 7 输出:7 注意: 您可以假设树(即给定的根节点)不为 NULL。 思路: 经典的bfs,只需要记录每层的第一个结点值即可 package leetC...原创 2020-07-06 08:36:50 · 153 阅读 · 0 评论 -
lc_bfs_429_levelOrder
/* 题目:N叉树的层序遍历 middle 给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。 例如,给定一个 3叉树 : 返回其层序遍历: [ [1], [3,2,4], [5,6] ] */ /* 思路: 经典的bfs,不再赘述 */ package leetCode.BFS; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.L...原创 2020-07-06 08:23:36 · 90 阅读 · 0 评论 -
lc_bfs_417_pacificAtlantic
/* 题目:太平洋大西洋水流问题 middle 给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界, 而“大西洋”处于大陆的右边界和下边界。 规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。 请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。 提示: 输出坐标的顺序不重要 m 和 n 都小于150 示例: 给定下面的 5x5 矩阵: 太平洋 ~ ~ ~ ~...原创 2020-07-05 22:39:51 · 118 阅读 · 0 评论 -
lc_bfs_210_findOrder
/* 题目: 课程表 II middle 现在你总共有 n 门课需要选,记为 0 到 n-1。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 , 我们用一个匹配来表示他们: [0,1] 给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。 可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。 示例 1: 输入: 2, [[1,0]] 输出: [0,1] 解释: 总共有 2 门课程。要学习课程 1,你需要先完成原创 2020-07-05 15:33:07 · 104 阅读 · 0 评论 -
lc_bfs_207_canFinish
题目:课程表 middle 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 , 我们用一个匹配来表示他们:[0,1],给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习? 示例 1: 输入: 2, [[1,0]] 输出: true 解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。 示例 2: 输入: 2, [[1,0],[0,原创 2020-07-05 10:45:19 · 86 阅读 · 0 评论 -
lc_bfs_200_numIslands
题目:岛屿数量 middle 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入: [ ['1','1','1','1','0'], ['1','1','0','1','0'], ['1','1','0','0','0'], ['0','0','0','0','0'] ] 输出: 1 示例 2: 输入: [ ['1','1.原创 2020-07-04 22:44:17 · 79 阅读 · 0 评论 -
lc_bfs_199_rightSideView
题目:二叉树的右视图 middle 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 package leetCode.BFS; import java.util.ArrayDeque; import java.util.LinkedList; import java.util.List; public class lc_bfs_199_rightSideView { /* 题目:二叉树的右视图 middle 给定一棵二叉树,想象自己站在它的右侧,按.原创 2020-07-04 11:12:21 · 113 阅读 · 0 评论 -
lc_bfs_133_cloneGraph
/* 题目:克隆图 middle 给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。 图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。 class Node { public int val; public List<Node> neighbors; } 测试用例格式: 简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1), 第二个节点值为 2(val = 2),以此类推。该图在测试用例中...原创 2020-07-03 23:45:32 · 90 阅读 · 0 评论 -
lc_bfs_126_findLadders
题目:单词接龙 II hard 给定两个单词(beginWord 和 endWord)和一个字典 wordList, 找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则: 每次转换只能改变一个字母。 转换后得到的单词必须是字典中的单词。 说明: 如果不存在这样的转换序列,返回一个空列表。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。 你可以假设 beginWord 和 endWo...原创 2020-07-03 16:23:22 · 101 阅读 · 0 评论 -
lc_bfs_127_ladderLength
题目:单词接龙 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。 转换需遵循如下规则: 1.每次转换只能改变一个字母。 2.转换过程中的中间单词必须是字典中的单词。 说明: 如果不存在这样的转换序列,返回 0。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。 你可以假设 beginWord 和 endWord 是非空的,且二者不相同...原创 2020-07-03 09:17:53 · 151 阅读 · 0 评论 -
lc_bfs_1_levelOrderBottom
题目:二叉树的层次遍历 II simple 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) package leetCode.BFS; import java.util.ArrayDeque; import java.util.Deque; import java.util.LinkedList; import java.util.List; public class lc_bfs_1_levelOrderBottom { /* 题目.原创 2020-06-26 18:15:55 · 115 阅读 · 0 评论 -
lc_bfs_103_zigzagLevelOrder
题目: 二叉树的锯齿形层次遍历 middle 给定一个二叉树,返回其节点值的锯齿形层次遍历。 (即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 package leetCode.BFS; import java.util.*; public class lc_bfs_103_zigzagLevelOrder { /* 题目: 二叉树的锯齿形层次遍历 middle 给定一个二叉树,返回其节点值的锯齿形层次遍历。 (即先从左往右,再从右往左进行下一层遍历,以此类推,层与.原创 2020-06-26 13:16:30 · 138 阅读 · 0 评论 -
lc_bfs_310_findMinHeightTrees
题目:最小高度树 middle 对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树, 在所有可能的树中,具有最小高度的树被称为最小高度树。 给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。 格式: 该图包含 n 个节点,标记为 0 到 n - 1。给定数字 n 和一个无向边 edges 列表(每一个边都是一对标签)。 你可以假设没有重复的边会出现在 edges 中。由于所有的边都是无向边, [0, 1]和 [1, 0] 是相同的, 因此不会同时...原创 2020-06-25 21:12:54 · 106 阅读 · 0 评论 -
lc_bfs_1162_maxDistance
题目:地图分析 middle 你现在手里有一份大小为 N x N 的「地图」(网格) grid, 上面的每个「区域」(单元格)都用0和1 标记好了。其中 0 代表海洋,1 代表陆地。 (图见原题)https://leetcode-cn.com/problems/as-far-from-land-as-possible/?utm_source=LCUS&utm_medium=ip_redirect_q_uns&utm_campaign=transfer2china 请你找...原创 2020-06-24 13:35:20 · 265 阅读 · 0 评论 -
lc_bfs_117_connect
题目:填充每个节点的下一个右侧节点指针II middle package leetCode.BFS; public class lc_bfs_117_connect { /* 题目:填充每个节点的下一个右侧节点指针II middle 给定一个二叉树 struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点, 则将 next 指针.原创 2020-06-24 11:17:19 · 85 阅读 · 0 评论 -
lc_bfs_102_levelOrder
题目:二叉树的层序遍历 middle 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。(即逐层地,从左到右访问所有节点)。 package leetCode.BFS; import java.util.LinkedList; import java.util.List; public class lc_bfs_102_levelOrder { /* 题目:二叉树的层序遍历 middle 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。(即逐层地,从左到右访问所有节点)。 示例: 二叉.原创 2020-06-24 11:15:33 · 84 阅读 · 0 评论