简单搜索
文章平均质量分 53
Guapifang
这个作者很懒,什么都没留下…
展开
-
安排超市 -- BFS分割搜索
4.安排超市给定一个n*n的地图。地图是上下左右四联通的,不能斜向行走:*代表障碍,不可通行。.代表路,可以通行。#代表房子。房子也是可以通行的。小红现在需要在一些地方安排一些超市(不能安排在障碍物上,可以安排在路上或者房子上。超市也是可以通行的)。小红希望每个房子至少可以到达一个超市。同时由于成本原因,小红希望超市的数量尽可能少。在超市数量最少的情况下,小红希望每个房子到达最近的超市的距离之和尽可能小。她想知道超市最少的数量,以及最小的距离之和。你能帮帮她吗?原创 2023-04-30 20:09:50 · 745 阅读 · 1 评论 -
4. 对称飞行器 -- BFS搜索
一种可行的路径是用对称飞行器到达 \text (4,3) 再向上走一步,再向右走一步,然后使用一次对称飞行器到达终点。再开一维,表示风行器使用的次数,就可以了,剩下的就是简单的BFS搜索。第一行两个空格分隔的正整数 ,分别代表迷宫的行数和列数。接下来 行 每行一个长度为 的字符串来描述这个迷宫。仅一行一个整数表示从起点最小花费多少时间单位到达终点。空间限制:C/C++ 256M,其他语言512M。时间限制:C/C++ 2秒,其他语言4秒。保证只有一个 和 一个。如果无法到达终点,输出。原创 2023-03-13 18:04:56 · 621 阅读 · 0 评论 -
LeetCode 982. 按位与为零的三元组 -- 哈希统计
按位与三元组 是由下标 (i, j, k) 组成的三元组,并满足下述全部条件:nums[i] & nums[j] & nums[k] == 0 ,其中 & 表示按位与运算符。原创 2023-03-04 14:19:08 · 547 阅读 · 0 评论 -
LeetCode 1145. 二叉树着色游戏 -- 简单搜索
最开始时:「一号」玩家从 [1, n] 中取一个值 x(1原创 2023-02-28 17:42:53 · 473 阅读 · 0 评论 -
LeetCode 429. N 叉树的层序遍历 -- DFS
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:[[1],[3,2,4],[5,6]]示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]提示:树的原创 2022-12-05 12:39:04 · 119 阅读 · 0 评论 -
Leetcode 1774. 最接近目标价格的甜点成本 -- 暴力搜索
必须选择 一种 冰激凌基料。可以添加 一种或多种 配料,也可以不添加任何配料。每种类型的配料 最多两份 。给你以下三个输入:baseCosts ,一个长度为 n 的整数数组,其中每个 baseCosts[i] 表示第 i 种冰激凌基料的价格。toppingCosts,一个长度为 m 的整数数组,其中每个 toppingCosts[i] 表示 一份 第 i 种冰激凌配料的价格。target ,一个整数,表示你制作甜点的目标价格。你希望自己做的甜点总成本尽可能接近目标价格 target 。返回最接近原创 2022-12-04 16:39:52 · 103 阅读 · 0 评论 -
LeetCode 129. 求根节点到叶节点数字之和 --dfs
例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123。计算从根节点到叶节点生成的 所有数字之和。叶节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3]输出:25解释:从根到叶子节点路径 1->2 代表数字 12从根到叶子节点路径 1->3 代表数字 13因此,数字总和 = 12 + 13 = 25示例 2:输入:root = [4,9,0,5,1]输出:1026解释:从根到叶子节点路径 4->9->5 代表数字 495。原创 2022-11-05 17:14:27 · 133 阅读 · 0 评论 -
LeetCode 2044. 统计按位或能得到最大值的子集数目 --深度遍历
统计按位或能得到最大值的子集数目给你一个整数数组 nums ,请你找出 nums 子集 按位或 可能得到的 最大值 ,并返回按位或能得到最大值的 不同非空子集的数目 。如果数组 a 可以由数组 b 删除一些元素(或不删除)得到,则认为数组 a 是数组 b 的一个 子集 。如果选中的元素下标位置不一样,则认为两个子集 不同 。对数组 a 执行 按位或 ,结果等于 a[0] OR a[1] OR … OR a[a.length - 1](下标从 0 开始)。示例 1:输入:nums = [3,1].原创 2022-03-15 11:03:25 · 1323 阅读 · 0 评论 -
LeetCode 2049. 统计最高分的节点数目--树的遍历
统计最高分的节点数目给你一棵根节点为 0 的 二叉树 ,它总共有 n 个节点,节点编号为 0 到 n - 1 。同时给你一个下标从 0 开始的整数数组 parents 表示这棵树,其中 parents[i] 是节点 i 的父节点。由于节点 0 是根,所以 parents[0] == -1 。一个子树的 大小 为这个子树内节点的数目。每个节点都有一个与之关联的 分数 。求出某个节点分数的方法是,将这个节点和与它相连的边全部 删除 ,剩余部分是若干个 非空 子树,这个节点的 分数 为所有这些子树 大小的.原创 2022-03-11 11:07:56 · 637 阅读 · 0 评论 -
LeetCode 99. 恢复二叉搜索树 -- 中序遍历+排序
恢复二叉搜索树给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树 。示例 1:输入:root = [1,3,null,null,2]输出:[3,1,null,null,2]解释:3 不能是 1 的左孩子,因为 3 > 1 。交换 1 和 3 使二叉搜索树有效。示例 2:输入:root = [3,1,4,null,null,2]输出:[2,1,4,null,null,3]解释:2 不能在 3 的右子树中,因为 2 .原创 2022-03-09 15:12:39 · 961 阅读 · 0 评论 -
LeetCode 94. 二叉树的中序遍历
二叉树的中序遍历给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0, 100] 内-100 <= Node.val <= 100题.原创 2022-03-07 11:22:27 · 74 阅读 · 0 评论 -
LeetCode 101. 对称二叉树 --DFS
对称二叉树给你一个二叉树的根节点 root , 检查它是否轴对称。示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:false提示:树中节点数目在范围 [1, 1000] 内-100 <= Node.val <= 100题解直接DFS搜索判断下就行。AC代码/** * Definition for a binary tree node. * struct .原创 2022-03-03 10:35:01 · 329 阅读 · 0 评论 -
LeetCode 838. 推多米诺--BFS+时间判断
推多米诺n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立。在开始时,同时把一些多米诺骨牌向左或向右推。每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。同样地,倒向右边的多米诺骨牌也会推动竖立在其右侧的相邻多米诺骨牌。如果一张垂直竖立的多米诺骨牌的两侧同时有多米诺骨牌倒下时,由于受力平衡, 该骨牌仍然保持不变。就这个问题而言,我们会认为一张正在倒下的多米诺骨牌不会对其它正在倒下或已经倒下的多米诺骨牌施加额外的力。给你一个字符串 dominoes 表示这一行多米诺骨牌的初始状态,其中.原创 2022-02-21 10:19:40 · 108 阅读 · 0 评论 -
LeetCode 1765. 地图中的最高点 -- BFS搜索
地图中的最高点给你一个大小为 m x n 的整数矩阵 isWater ,它代表了一个由 陆地 和 水域 单元格组成的地图。如果 isWater[i][j] == 0 ,格子 (i, j) 是一个 陆地 格子。如果 isWater[i][j] == 1 ,格子 (i, j) 是一个 水域 格子。你需要按照如下规则给每个单元格安排高度:每个格子的高度都必须是非负的。如果一个格子是是 水域 ,那么它的高度必须为 0 。任意相邻的格子高度差 至多 为 1 。当两个格子在正东、南、西、北方向上相互紧.原创 2022-01-29 14:06:05 · 147 阅读 · 0 评论 -
LeetCode 386. 字典序排数 --DFS搜索
字典序排数给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。示例 1:输入:n = 13输出:[1,10,11,12,13,2,3,4,5,6,7,8,9]示例 2:输入:n = 2输出:[1,2]提示:1 <= n <= 5 * 104题解之前看到这种题目就很害怕,但是今天突然想到了什么,直接深度搜索就行了啊,完事,简单方便快捷。AC代码class Solution {pu.原创 2021-12-09 11:23:52 · 331 阅读 · 0 评论 -
LeetCode 1034. 边界着色 -- bfs搜索+边界判断
边界着色给你一个大小为 m x n 的整数矩阵 grid ,表示一个网格。另给你三个整数 row、col 和 color 。网格中的每个值表示该位置处的网格块的颜色。当两个网格块的颜色相同,而且在四个方向中任意一个方向上相邻时,它们属于同一 连通分量 。连通分量的边界 是指连通分量中的所有与不在分量中的网格块相邻(四个方向上)的所有网格块,或者在网格的边界上(第一行/列或最后一行/列)的所有网格块。请你使用指定颜色 color 为所有包含网格块 grid[row][col] 的 连通分量的边界 .原创 2021-12-07 13:04:22 · 273 阅读 · 0 评论 -
LeetCode 剑指 Offer 26. 树的子结构 -- dfs
剑指 Offer 26. 树的子结构输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3/ \4 5/ 1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B = [4,1]输出:tru原创 2021-12-05 16:46:27 · 84 阅读 · 0 评论 -
LeetCode 面试题 08.04. 幂集 -- dfs
面试题 08.04. 幂集幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]题解暴力搜索,分别判断只要1个元素、2个元素、…的情况。AC代码class Solution {public: vector<vector<int>>res; vector<原创 2021-12-05 16:20:17 · 140 阅读 · 0 评论 -
LeetCode 698. 划分为k个相等的子集 --排序+搜索
划分为k个相等的子集给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。示例 1:输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4输出: True说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。提示:1 <= k <= len(nums) <= 160 < nums[i] < 10000题解和这个题目一个套路:LeetCode 4.原创 2021-12-02 10:40:20 · 190 阅读 · 0 评论 -
LeetCode 1239. 串联字符串的最大长度 -- 位运算+DFS搜索
串联字符串的最大长度给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串,如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。请返回所有可行解 s 中最长长度。示例 1:输入:arr = [“un”,“iq”,“ue”]输出:4解释:所有可能的串联组合是 “”,“un”,“iq”,“ue”,“uniq” 和 “ique”,最大长度为 4。示例 2:输入:arr = [“cha”,“r”,“act”,“ers”]输出:6解释:可能的解答有 “.原创 2021-11-30 11:27:15 · 158 阅读 · 0 评论 -
LeetCode 473. 火柴拼正方形 --排序后+深度优先搜索
火柴拼正方形还记得童话《卖火柴的小女孩》吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法。不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到。输入为小女孩拥有火柴的数目,每根火柴用其长度表示。输出即为是否能用所有的火柴拼成正方形。示例 1:输入: [1,1,2,2,2]输出: true解释: 能拼成一个边长为2的正方形,每边两根火柴。示例 2:输入: [3,3,3,3,4]输出: false解释: 不能用所有火柴拼成一个正方形。注意:给定的火柴.原创 2021-11-30 10:53:56 · 109 阅读 · 0 评论 -
LeetCode 433. 最小基因变化 -- bfs
最小基因变化一条基因序列由一个带有8个字符的字符串表示,其中每个字符都属于 “A”, “C”, “G”, "T"中的任意一个。假设我们要调查一个基因序列的变化。一次基因变化意味着这个基因序列中的一个字符发生了变化。例如,基因序列由"AACCGGTT" 变化至 “AACCGGTA” 即发生了一次基因变化。与此同时,每一次基因变化的结果,都需要是一个合法的基因串,即该结果属于一个基因库。现在给定3个参数 — start, end, bank,分别代表起始基因序列,目标基因序列及基因库,请找出能够使.原创 2021-11-27 22:39:07 · 107 阅读 · 0 评论 -
LeetCode 437. 路径总和 III--DFS+map查找
路径总和 III给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例 1:输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8输出:3解释:和等于 8 的路径有 3 条,如图所示。示例 2:输入:root = [5,4,8,11,null.原创 2021-11-27 17:18:58 · 75 阅读 · 0 评论 -
LeetCode 1387. 将整数按权重排序--BFS搜索
将整数按权重排序我们将整数 x 的 权重 定义为按照下述规则将 x 变成 1 所需要的步数:如果 x 是偶数,那么 x = x / 2如果 x 是奇数,那么 x = 3 * x + 1比方说,x=3 的权重为 7 。因为 3 需要 7 步变成 1 (3 --> 10 --> 5 --> 16 --> 8 --> 4 --> 2 --> 1)。给你三个整数 lo, hi 和 k 。你的任务是将区间 [lo, hi] 之间的整数按照它们的权重 升序排序 .原创 2021-10-27 09:48:30 · 119 阅读 · 0 评论 -
LeetCode 685. 冗余连接 I--bfs
冗余连接 II在本问题中,有根树指满足以下条件的 有向 图。该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。输入一个有向图,该图由一个有着 n 个节点(节点值不重复,从 1 到 n)的树及一条附加的有向边构成。附加的边包含在 1 到 n 中的两个不同顶点间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组 edges 。 每个元素是一对 [ui, vi],用以表示 有向 图中连接顶点 ui 和顶点 vi 的.原创 2021-10-21 09:50:49 · 95 阅读 · 0 评论 -
LeetCode 1723. 完成所有工作的最短时间--二分+递归搜索
完成所有工作的最短时间给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间。请你将这些工作分配给 k 位工人。所有工作都应该分配给工人,且每项工作只能分配给一位工人。工人的 工作时间 是完成分配给他们的所有工作花费时间的总和。请你设计一套最佳的工作分配方案,使工人的 最大工作时间 得以 最小化 。返回分配方案中尽可能 最小 的 最大工作时间 。示例 1:输入:jobs = [3,2,3], k = 3输出:3解释:给每位工人分配一项工作,最大工作时间是 3 .原创 2021-10-14 11:04:28 · 248 阅读 · 0 评论 -
LeetCode 107. 二叉树的层序遍历 II
二叉树的层序遍历 II给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其自底向上的层序遍历为:[[15,7],[9,20],[3]]题解/** * Definition for a binary tree node. * struct TreeNode { * int val; * T.原创 2021-10-08 13:13:50 · 48 阅读 · 0 评论 -
LeetCode 40. 组合总和 II--哈希判断+DFS
组合总和 II给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,输出:[[1,1,6],[1,2,5],[1,7],[2,6]]示例 2:输入: candidates = [2,5,2,1,2], t.原创 2021-10-04 11:32:00 · 68 阅读 · 0 评论 -
LeetCode 102. 二叉树的层序遍历--BFS
二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层序遍历结果:[[3],[9,20],[15,7]]题解简单的BFS。AC代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeN.原创 2021-10-03 10:28:52 · 73 阅读 · 0 评论 -
LeetCode 51. N 皇后--dfs
N 皇后n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[".Q…","…Q",“Q…”,"…Q."],["…Q.",“Q…”,"…Q",".Q…"]]解释:如上图所示,4 皇后问题存在两个不同的解法。示例 2:输入:n = 1输出.原创 2021-10-03 10:16:48 · 99 阅读 · 0 评论 -
LeetCode 1036. 逃离大迷宫--哈希标记+set查询+BFS
逃离大迷宫在一个 106 x 106 的网格中,每个网格上方格的坐标为 (x, y) 。现在从源方格 source = [sx, sy] 开始出发,意图赶往目标方格 target = [tx, ty] 。数组 blocked 是封锁的方格列表,其中每个 blocked[i] = [xi, yi] 表示坐标为 (xi, yi) 的方格是禁止通行的。每次移动,都可以走到网格中在四个方向上相邻的方格,只要该方格 不 在给出的封锁列表 blocked 上。同时,不允许走出网格。只有在可以通过一系列的移动.原创 2021-09-25 14:21:53 · 245 阅读 · 0 评论 -
LeetCode 508. 出现次数最多的子树元素和--DFS遍历树
出现次数最多的子树元素和给你一个二叉树的根结点,请你找出出现次数最多的子树元素和。一个结点的「子树元素和」定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。你需要返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。示例 1:输入:5/ 2 -3返回 [2, -3, 4],所有的值均只出现一次,以任意顺序返回所有值。示例 2:输入:5/ 2 -5返回 [2],只有 2 出现两次,-5 只出现 1 次.原创 2021-09-24 19:05:37 · 65 阅读 · 0 评论 -
LeetCode 996. 正方形数组的数目--dfs遍历图
正方形数组的数目给定一个非负整数数组 A,如果该数组每对相邻元素之和是一个完全平方数,则称这一数组为正方形数组。返回 A 的正方形排列的数目。两个排列 A1 和 A2 不同的充要条件是存在某个索引 i,使得 A1[i] != A2[i]。示例 1:输入:[1,17,8]输出:2解释:[1,8,17] 和 [17,8,1] 都是有效的排列。示例 2:输入:[2,2,2]输出:1提示:1 <= A.length <= 120 <= A[i] <= 1e9.原创 2021-09-23 16:50:10 · 166 阅读 · 0 评论 -
LeetCode 928. 尽量减少恶意软件的传播 II--暴力BFS
尽量减少恶意软件的传播 II(这个问题与 尽量减少恶意软件的传播 是一样的,不同之处用粗体表示。)在节点网络中,只有当 graph[i][j] = 1 时,每个节点 i 能够直接连接到另一个节点 j。一些节点 initial 最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节点都将被恶意软件感染。这种恶意软件的传播将继续,直到没有更多的节点可以被这种方式感染。假设 M(initial) 是在恶意软件停止传播之后,整个网络中感染恶意软件的最终节点数。我们可.原创 2021-09-12 16:13:56 · 159 阅读 · 0 评论 -
LeetCode 994. 腐烂的橘子--BFS搜索
腐烂的橘子在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。示例 1:输入:[[2,1,1],[1,1,0],[0,1,1]]输出:4示例 2:输入:[[2,1,1],[0,1,1],[1,0,1]]输出:-1解释:左下角的橘子(第 2 行, 第 0 列)永远不会.原创 2021-09-11 20:20:18 · 106 阅读 · 0 评论 -
LeetCode 851. 喧闹和富有--入度判断+BFS
喧闹和富有在一组 N 个人(编号为 0, 1, 2, …, N-1)中,每个人都有不同数目的钱,以及不同程度的安静(quietness)。为了方便起见,我们将编号为 x 的人简称为 "person x "。如果能够肯定 person x 比 person y 更有钱的话,我们会说 richer[i] = [x, y] 。注意 richer 可能只是有效观察的一个子集。另外,如果 person x 的安静程度为 q ,我们会说 quiet[x] = q 。现在,返回答案 answer ,其中 a.原创 2021-09-04 10:33:32 · 86 阅读 · 0 评论 -
LeetCode 752. 打开转盘锁--BFS模拟
打开转盘锁你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。字符串 target 代表可以.原创 2021-08-27 14:46:56 · 77 阅读 · 0 评论 -
LeetCode 773. 滑动谜题--BFS
滑动谜题在一个 2 x 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示.一次移动定义为选择 0 与一个相邻的数字(上下左右)进行交换.最终当板 board 的结果是 [[1,2,3],[4,5,0]] 谜板被解开。给出一个谜板的初始状态,返回最少可以通过多少次移动解开谜板,如果不能解开谜板,则返回 -1 。示例:输入:board = [[1,2,3],[4,0,5]]输出:1解释:交换 0 和 5 ,1 步完成输入:board = [[1,.原创 2021-08-25 20:48:43 · 151 阅读 · 0 评论 -
LeetCode 797. 所有可能的路径--DFS
所有可能的路径给你一个有 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 -> 2 -.原创 2021-08-25 19:52:38 · 567 阅读 · 0 评论 -
LeetCode 695. 岛屿的最大面积--BFS
岛屿的最大面积给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0.原创 2021-08-23 22:30:35 · 91 阅读 · 0 评论