DFS/BFS
文章平均质量分 56
DFS/BFS
Sophia_fez
干啥啥不行,可爱第一名.jpg
展开
-
leetcode *808. 分汤(2022.11.21)
我们可以发现,每次分配操作有 (4,0),(3,1),(2,2),(1,3) 四种,那么在一次分配中,汤 A 平均会被分配的份数期望为 E(A)=(4+3+2+1)×0.25=2.5,汤 B 平均会被分配的份数期望为 E(B)=(0+1+2+3)×0.25=1.5。首先,由于四种分配操作都是 25 的倍数,因此我们可以将 n 除以 25(如果有余数,则补 1),并将四种分配操作变为 (4,0),(3,1),(2,2),(1,3),且每种操作的概率均为 0.25。当两种类型的汤都分配完时,停止操作。原创 2022-11-21 00:27:21 · 251 阅读 · 1 评论 -
leetcode *797. 所有可能的路径(2021.8.25)(待研究)
【题目】*797. 所有可能的路径给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序)二维数组的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些节点,空就是没有下一个结点了。译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a 。示例 1:输入:graph = [[1,2],[3],[3],[]]输出:[[0,1,3],[0,2,3]]解释:有两条路径 0 -> 1 -> 3 和 0 -原创 2021-08-25 09:45:13 · 102 阅读 · 0 评论 -
leetcode *752. 打开转盘锁(2021.6.25)
【题目】*752. 打开转盘锁你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。字符串 tar原创 2021-07-01 15:33:46 · 59 阅读 · 0 评论 -
leetcode **773. 滑动谜题(拼图)(2021.6.26)
【题目】【解题思路1】【解题思路2】原创 2021-07-01 15:30:39 · 228 阅读 · 0 评论 -
leetcode *8909. 蛇梯棋(2021.6.27)
【题目】*8909. 蛇梯棋N x N 的棋盘 board 上,按从 1 到 N*N 的数字给方格编号,编号 从左下角开始,每一行交替方向。例如,一块 6 x 6 大小的棋盘,编号如下:r 行 c 列的棋盘,按前述方法编号,棋盘格中可能存在 “蛇” 或 “梯子”;如果 board[r][c] != -1,那个蛇或梯子的目的地将会是 board[r][c]。玩家从棋盘上的方格 1 (总是在最后一行、第一列)开始出发。每一回合,玩家需要从当前方格 x 开始出发,按下述要求前进:选定目标方格:从编号原创 2021-07-01 15:26:39 · 125 阅读 · 0 评论 -
leetcode **815. 公交路线(另一种解法待深究)(2021.6.28)
【题目】*815. 公交路线给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路,第 i 辆公交车将会在上面循环行驶。例如,路线 routes[0] = [1, 5, 7] 表示第 0 辆公交车会一直按序列 1 -> 5 -> 7 -> 1 -> 5 -> 7 -> 1 -> … 这样的车站路线行驶。现在从 source 车站出发(初始时不在公交车上),要前往 target 车站。 期间仅可乘坐公交车。求出 最少乘原创 2021-07-01 15:21:11 · 134 阅读 · 0 评论 -
leetcode **剑指 Offer 37. 序列化二叉树(2021.6.30) & **297. 二叉树的序列化与反序列化(tree与string相互转化)(2020.6.16)
【题目】【解题思路1】【解题思路2】原创 2020-06-16 11:20:43 · 196 阅读 · 0 评论 -
leetcode **127. 单词接龙(待研究)(2020.11.5)
【题目】**127. 单词接龙给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例 1:输入:beginWord = "h原创 2020-11-05 09:52:50 · 128 阅读 · 0 评论 -
leetcode 257. 二叉树的所有路径(2020.9.4)
【题目】257. 二叉树的所有路径给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3【解题思路1】Java里面String是引...原创 2020-04-04 16:29:05 · 265 阅读 · 0 评论 -
leetcode *841. 钥匙和房间(2020.8.31)
【题目】*841. 钥匙和房间有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,…,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由 [0,1,…,N-1] 中的一个整数表示,其中 N = rooms.length。 钥匙 rooms[i][j] = v 可以打开编号为 v 的房间。最初,除 0 号房间外的其余所有房间都被锁住。你可以自由地在房间之间来回走动。如果能进原创 2020-08-31 09:35:01 · 101 阅读 · 0 评论 -
leetcode *332. 重新安排行程(欧拉回路 / 欧拉通路)(2020.8.27)
【题目】*332. 重新安排行程753. 破解保险箱给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。说明:如果存在多种有效的行程,你可以按字符自然排序返回最小的行程组合。例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”] 相比就更小,排序更靠前所有的机场都用三个大写字母表示(机场代码)。假定所有机票原创 2020-08-27 12:29:59 · 256 阅读 · 0 评论 -
leetcode *491. 递增子序列(2020.8.25)
【题目】*491. 递增子序列给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]说明:给定数组的长度不会超过15。数组中的整数范围是 [-100,100]。给定数组中可能包含重复数字,相等的数字应该被视为递增的一种情况。【解题思路1】递归class Solu原创 2020-08-25 09:56:59 · 148 阅读 · 0 评论 -
leetcode **679. 24 点游戏(待研究)(2020.8.22)
【题目】**679. 24 点游戏你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。示例 1:输入: [4, 1, 8, 7]输出: True解释: (8-4) * (7-1) = 24示例 2:输入: [1, 2, 1, 2]输出: False注意:除法运算符 / 表示实数除法,而不是整数除法。例如 4 / (1 - 2/3) = 12 。每个运算符对两个数进行运算。特别是我们不能用 - 作为一元运算符。例如,[1, 1, 1原创 2020-08-22 12:16:06 · 168 阅读 · 0 评论 -
leetcode *207. 课程表(拓补排序)(2020.8.4)
【题目】*207. 课程表本题和 210. 课程表 II 是几乎一样的题目。如果在过去完成过该题,那么只要将代码中的返回值从「非空数组 / 空数组」修改成「True / False」就可以通过本题。你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?示例 1:输入: 2,原创 2020-08-04 09:37:18 · 197 阅读 · 0 评论 -
leetcode **LCP 13. 寻宝(待研究)(2020.7.29)
【题目】**LCP 13. 寻宝我们得到了一副藏宝图,藏宝图显示,在一个迷宫中存在着未被世人发现的宝藏。迷宫是一个二维矩阵,用一个字符串数组表示。它标识了唯一的入口(用 ‘S’ 表示),和唯一的宝藏地点(用 ‘T’ 表示)。但是,宝藏被一些隐蔽的机关保护了起来。在地图上有若干个机关点(用 ‘M’ 表示),只有所有机关均被触发,才可以拿到宝藏。要保持机关的触发,需要把一个重石放在上面。迷宫中有若干个石堆(用 ‘O’ 表示),每个石堆都有无限个足够触发机关的重石。但是由于石头太重,我们一次只能搬一个石头到原创 2020-07-29 09:09:26 · 430 阅读 · 1 评论 -
leetcode **329. 矩阵中的最长递增路径(待研究)(2020.7.26)
【题目】**329. 矩阵中的最长递增路径给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。示例 2:输入: nums = [ [3,4,5], [3,2,6], [2,2,1]] 输出: 4 解释: 最原创 2020-07-26 10:17:22 · 177 阅读 · 0 评论 -
leetcode 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 & 235. 二叉搜索树的最近公共祖先(2020.9.27)
【题目】235. 二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]...原创 2020-04-04 15:46:03 · 200 阅读 · 0 评论 -
leetcode 剑指 Offer 68 - II. 二叉树的最近公共祖先 & *236. 二叉树的最近公共祖先(2020.5.10)
【题目】*236. 二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1原创 2020-05-10 14:28:05 · 218 阅读 · 0 评论 -
leetcode **124. 二叉树中的最大路径和(2020.6.21)
【题目】**124. 二叉树中的最大路径和给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7输出: 42【解题思路1】递归主要是两种原创 2020-06-21 12:19:47 · 207 阅读 · 0 评论 -
leetcode **126. 单词接龙 II(待研究)(2020.6.7)
【题目】**126. 单词接龙 II给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例 1:输入:原创 2020-06-07 12:41:56 · 204 阅读 · 1 评论 -
leetcode *210. 课程表 II(拓补排序)(2020.5.17)
【题目】*210. 课程表 II现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例 1:输入: 2, [[1,0]] 输出: [0,1]解释: 总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因原创 2020-05-17 16:25:25 · 154 阅读 · 0 评论 -
leetcode *1162. 地图分析(方向数组)(2020.3.29)
【题目】你现在手里有一份大小为 N x N 的『地图』(网格) grid,上面的每个『区域』(单元格)都用 0 和 1 标记好了。其中 0 代表海洋,1 代表陆地,你知道距离陆地区域最远的海洋区域是是哪一个吗?请返回该海洋区域到离它最近的陆地区域的距离。我们这里说的距离是『曼哈顿距离』( Manhattan Distance):(x0, y0) 和 (x1, y1) 这两个区域之间的距离是 |...原创 2020-03-29 21:47:43 · 293 阅读 · 0 评论 -
leetcode *365. 水壶问题(待研究)(2020.3.21)
【题目】365. 水壶问题有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。你允许:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空示例 1: (From the famous “Die Hard” example)输入: x...原创 2020-04-07 19:50:12 · 216 阅读 · 0 评论 -
leetcode 994. 腐烂的橘子(方向数组)(2020.3.4)
【题目】在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。示例 1:输入:[[2,1,1],[1,1,0],[0,1,1]]输出:4示例 2:输入:[[2,...原创 2020-03-30 22:51:31 · 219 阅读 · 0 评论 -
leetcode LCP 07. 传递信息(2021.7.1)
【题目】LCP 07. 传递信息小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下:有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0每个玩家都有固定的若干个可传信息的其他玩家(也可能没有)。传信息的关系是单向的(比如 A 可以向 B 传信息,但 B 不能向 A 传信息)。每轮信息必须需要传递给另一个人,且信息可重复经过同一个人给定总玩家数 n,以及按 [玩家编号,对应可传递玩家编号] 关系组成的二维数组 relation。返回信息从小 A (编号 0原创 2020-05-26 14:21:59 · 300 阅读 · 0 评论 -
leetcode *695. 岛屿的最大面积(方向数组)(2020.3.15)
【题目】695. 岛屿的最大面积给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,...原创 2020-04-02 15:38:31 · 196 阅读 · 0 评论 -
leetcode 733. 图像渲染 & 面试题 08.10. 颜色填充(2020.8.16)
【题目】733. 图像渲染有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他...原创 2020-04-29 14:08:40 · 382 阅读 · 1 评论 -
leetcode 690. 员工的重要性
【题目】690. 员工的重要性给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id。比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是[2, 10, [3]],员工3的数据结构是[3, 5, []]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因...原创 2020-04-25 17:08:53 · 170 阅读 · 0 评论 -
leetcode *200. 岛屿数量(方向数组)(2020.4.20)
【题目】*200. 岛屿数量给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出:...原创 2020-04-20 15:01:56 · 205 阅读 · 0 评论 -
leetcode *542. 01 矩阵(方向数组)(2020.4.15)
【题目】*542. 01 矩阵*695. 岛屿的最大面积*542. 01 矩阵给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2:输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1注意...原创 2020-04-15 13:50:19 · 302 阅读 · 0 评论 -
leetcode 437. 路径总和 III
【题目】437. 路径总和 III给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,...原创 2020-04-13 15:07:19 · 207 阅读 · 0 评论 -
leetcode 401. 二进制手表
【题目】401. 二进制手表22. 括号生成95. 不同的二叉搜索树 II46. 全排列二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。例如,上面的二进制手表读取 “3:25”。给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。案例:输入: n = 1...原创 2020-04-10 17:20:31 · 238 阅读 · 0 评论 -
leetcode *22. 括号生成(2020.4.9)
【题目】22. 括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]【解题思路1】DFSDFS步骤:当前左右括号都有大于 ...原创 2020-04-09 14:57:12 · 196 阅读 · 0 评论 -
leetcode *剑指 Offer 13. 机器人的运动范围(方向数组)(2020.4.8)
【题目】面试题13. 机器人的运动范围地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5...原创 2020-04-08 13:28:00 · 204 阅读 · 0 评论