LC 847. 访问所有节点的最短路径 题目描述这是 LeetCode 上的 847. 访问所有节点的最短路径 ,难度为 困难。 存在一个由 $n$ 个节点组成的无向连通图,图中的节点按从 $0$ 到 $n - 1$ 编号。 给你一个数组 graph 表示这个图。其中,$graph[i]$ 是一个列表,由所有与节点 $i$ 直接相连的节点组成。 返回能够访问所有节点的最短路径的长度。你可以在任一节点开始和停止,也可以多次重访节点,并且可 2021-08-06 动态规划 图论 BFS 状态压缩 启发式搜索 AStar 算法 图
LC 802. 找到最终的安全状态 题目描述这是 LeetCode 上的 802. 找到最终的安全状态 ,难度为 中等。 在有向图中,以某个节点为起始节点,从该点出发,每一步沿着图中的一条有向边行走。如果到达的节点是终点(即它没有连出的有向边),则停止。 对于一个起始节点,如果从该节点出发,无论每一步选择沿哪条有向边行走,最后必然在有限步内到达终点,则将该起始节点称作是 安全 的。 返回一个由图中所有安全的起始节点组成的数组作为答案 2021-08-05 图 拓扑排序
LC 611. 有效三角形的个数 题目描述这是 LeetCode 上的 611. 有效三角形的个数 ,难度为 中等。 给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。 示例 1:123456789输入: [2,2,3,4]输出: 3解释:有效的组合是: 2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3注意: 数组长度不超过 $1000$。 数组里整数的范围为 $[0, 100 2021-08-04 双指针 二分 排序
LC 581. 最短无序连续子数组 题目描述这是 LeetCode 上的 581. 最短无序连续子数组 ,难度为 中等。 给你一个整数数组 nums,你需要找出一个连续子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 请你找出符合题意的最短子数组,并输出它的长度。 示例 1:12345输入:nums = [2,6,4,8,10,9,15]输出:5解释:你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那 2021-08-03 双指针 排序
LC 743. 网络延迟时间 题目描述这是 LeetCode 上的 743. 网络延迟时间 ,难度为 中等。 有 $n$ 个网络节点,标记为 $1$ 到 $n$。 给你一个列表 times,表示信号经过有向边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点,wi 是一个信号从源节点传递到目标节点的时间 现在,从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号? 2021-08-02 优先队列(堆) 最短路 图
LC 1337. 矩阵中战斗力最弱的 K 行 题目描述这是 LeetCode 上的 1337. 矩阵中战斗力最弱的 K 行 ,难度为 简单。 给你一个大小为 $m * n$ 的矩阵 $mat$,矩阵由若干军人和平民组成,分别用 $1$ 和 $0$ 表示。 请你返回矩阵中战斗力最弱的 $k$ 行的索引,按从最弱到最强排序。 如果第 $i$ 行的军人数量少于第 $j$ 行,或者两行军人数量相同但 $i$ 小于 $j$,那么我们认为第 $i$ 行的 2021-08-01 二分 优先队列(堆)
LC 987. 二叉树的垂序遍历 题目描述这是 LeetCode 上的 987. 二叉树的垂序遍历 ,难度为 困难。 给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位于 $(row, col)$ 的每个结点而言,其左右子结点分别位于 $(row + 1, col - 1)$ 和 $(row + 1, col + 1)$ 。树的根结点位于 $(0, 0)$ 。 二叉树的 垂序遍历 从最左边的列开始直到 2021-07-31 哈希表 优先队列(堆) DFS 排序 二叉树 数据结构运用
LC 171. Excel表列序号 题目描述这是 LeetCode 上的 171. Excel表列序号 ,难度为 简单。 给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回该列名称对应的列序号。 例如,12345678A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1:123输入: columnTitle = & 2021-07-30 模拟 进制转换
LC 1834. 单线程 CPU 题目描述这是 LeetCode 上的 1834. 单线程 CPU ,难度为 中等。 给你一个二维数组 $tasks$,用于表示 $n$ 项从 $0$ 到 $n - 1$ 编号的任务。 其中 $tasks[i] = [enqueueTime_i, processingTime_i]$ 意味着第 $i$ 项任务将会于 $enqueueTime_i$ 时进入任务队列,需要 $processingTime 2021-07-29 模拟 优先队列(堆) 排序
LC 1104. 二叉树寻路 题目描述这是 LeetCode 上的 1104. 二叉树寻路 ,难度为中等。 在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。 如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记; 而偶数行(即,第二行、第四行、第六行……)中,按从右到左的顺序进行标记。 给你树上某一个节点的标号 label,请你返回从根节点到该标号为 2021-07-29 模拟 数学 二叉树
LC 863. 二叉树中所有距离为 K 的结点 题目描述这是 LeetCode 上的 863. 二叉树中所有距离为 K 的结点 ,难度为 中等。 给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 K 。 返回到目标结点 target 距离为 K 的所有结点的值的列表。 答案可以以任何顺序返回。 示例 1:1234567输入:root = [3,5,1,6,2,0,8,null,null,7,4], targe 2021-07-28 图论 DFS 图论 BFS 二叉树
LC 671. 二叉树中第二小的节点 题目描述这是 LeetCode 上的 671. 二叉树中第二小的节点 ,难度为 简单。 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。 更正式地说,root.val = min(root.left.val, root.right.val) 总成立。 给出这样的一个二叉树,你需要输出所有 2021-07-27 二叉树 树的遍历 递归
LC 1713. 得到子序列的最少操作次数 题目描述这是 LeetCode 上的 1713. 得到子序列的最少操作次数 ,难度为 困难。 给你一个数组 target,包含若干互不相同的整数,以及另一个整数数组 arr,arr 可能包含重复元素。 每一次操作中,你可以在 arr 的任意位置插入任一整数。 比方说,如果 arr = [1,4,1,2],那么你可以在中间添加 3 得到 [1,4,3,1,2] 。 你可以在数组最开始或最后面添加整数 2021-07-26 二分 贪心 最长公共子序列 最长上升子序列
LC 1743. 从相邻元素对还原数组 题目描述这是 LeetCode 上的 1743. 从相邻元素对还原数组 ,难度为 中等。 存在一个由 n 个不同元素组成的整数数组 nums ,但你已经记不清具体内容,好在你还记得 nums 中的每一对相邻元素。 给你一个二维整数数组 adjacentPairs ,大小为 n - 1 ,其中每个 $adjacentPairs[i] = [u_i, v_i]$ 表示元素 $u_i$ 和 $v_i$ 2021-07-25 哈希表 模拟 双指针
LC 1736. 替换隐藏数字得到的最晚时间 题目描述这是 LeetCode 上的 1736. 替换隐藏数字得到的最晚时间 ,难度为 简单。 给你一个字符串 time,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示)。 有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和 23:59 。 替换 time 中隐藏的数字,返回你可以得到的最晚有效时间。 示例 1:12345输入:time = &qu 2021-07-24 贪心