LC 剑指 Offer 35. 复杂链表的复制 题目描述这是 LeetCode 上的 剑指 Offer 35. 复杂链表的复制 ,难度为 中等。 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random,该指针可以指向链表中的任何节点或空节点。 构造这个链表的深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。 新节点的 next 指针和 random 指针也都应指向复制链表中的新 2024-11-21 哈希表 链表
LC 剑指 Offer II 115. 重建序列 题目描述这是 LeetCode 上的 剑指 Offer II 115. 重建序列 ,难度为 中等。 给定一个长度为 n 的整数数组 nums ,其中 nums 是范围为 $[1,n]$ 的整数的排列。 还提供了一个 2D 整数数组 sequences,其中 sequences[i] 是 nums 的子序列。 检查 nums 是否是唯一的最短超序列。 最短超序列是长度最短的序列,并且所有序列 seq 2024-11-21 图论 BFS 拓扑排序 图论 建图
LC 1780. 判断一个数字是否可以表示成三的幂的和 题目描述这是 LeetCode 上的 1780. 判断一个数字是否可以表示成三的幂的和 ,难度为 中等。 给你一个整数 n,如果你可以将 n 表示成若干个不同的三的幂之和,请你返回 true,否则请返回 false。 对于一个整数 y,如果存在整数 x 满足 $y = 3^x$,我们称这个整数 y 是三的幂。 示例 1:12345输入:n = 12输出:true解释:12 = 31 + 32示例 2024-05-19 数学
LC 1691. 堆叠长方体的最大高度 题目描述这是 LeetCode 上的 1691. 堆叠长方体的最大高度 ,难度为 困难。 给你 n 个长方体 cuboids,其中第 i 个长方体的长宽高表示为 $cuboids[i] = [width_i, length_i, height_i]$(下标从 0 开始)。 请你从 cuboids 选出一个「子集」,并将它们堆叠起来。 如果 $width{i} <= width{j}$ 且 $ 2024-05-19 动态规划 序列 DP 排序
LC 1129. 颜色交替的最短路径 题目描述这是 LeetCode 上的 1129. 颜色交替的最短路径 ,难度为 中等。 在一个有向图中,节点分别标记为 0, 1, ..., n-1。 图中每条边为红色或者蓝色,且存在自环或平行边。 red_edges 中的每一个 [i, j] 对表示从节点 i 到节点 j 的红色有向边。 类似地,blue_edges 中的每一个 [i, j] 对表示从节点 i 到节点 j 的蓝色有向边。 返回长 2024-05-19 BFS 最短路
LC 1697. 检查边长度限制的路径是否存在 题目描述这是 LeetCode 上的 1697. 检查边长度限制的路径是否存在 ,难度为 困难。 给你一个 n 个点组成的无向图边集 edgeList,其中 $edgeList[i] = [u_i, v_i, dis_i]$ 表示点 $u_i$ 和点 $v_i$ 之间有一条长度为 $dis_i$ 的边。请注意,两个点之间可能有 超过一条边 。 给你一个查询数组 queries,其中 $querie 2024-05-19 双指针 并查集 排序
LC 1210. 穿过迷宫的最少移动次数 题目描述这是 LeetCode 上的 1210. 穿过迷宫的最少移动次数 ,难度为 困难。 你还记得那条风靡全球的贪吃蛇吗? 我们在一个 n*n 的网格上构建了新的迷宫地图,蛇的长度为 2,也就是说它会占去两个单元格。蛇会从左上角((0, 0) 和 (0, 1))开始移动。我们用 0 表示空单元格,用 1 表示障碍物。 蛇需要移动到迷宫的右下角((n-1, n-2) 和 (n-1, n-1))。 2024-04-27 BFS
LC 1781. 所有子字符串美丽值之和 题目描述这是 LeetCode 上的 1781. 所有子字符串美丽值之和 ,难度为 中等。 一个字符串的 美丽值 定义为:出现频率最高字符与出现频率最低字符的出现次数之差。 比方说,"abaacc" 的美丽值为 3 - 1 = 2。 给你一个字符串 s ,请你返回它所有子字符串的 美丽值 之和。 示例 1:12345输入:s = "aabcb"输出:5解释: 2024-04-27 哈希表 模拟
LC 2335. 装满杯子需要的最短总时长 题目描述这是 LeetCode 上的 2335. 装满杯子需要的最短总时长 ,难度为 简单。 现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。 给你一个下标从 0 开始、长度为 3 的整数数组 amount,其中 amount[0]、amount[1] 和 amount[2] 分别表示需要装满冷水、温水和热水的杯子数量。 返回装满所有杯子 2024-04-27 模拟 贪心 数学 排序 递归
LC 1759. 统计同构子字符串的数目 题目描述这是 LeetCode 上的 1759. 统计同构子字符串的数目 ,难度为 中等。 给你一个字符串 s,返回 s 中 同构子字符串 的数目。 由于答案可能很大,只需返回对 $10^9 + 7$ 取余 后的结果。 同构字符串的定义为:如果一个字符串中的所有字符都相同,那么该字符串就是同构字符串。 子字符串是字符串中的一个连续字符序列。 示例 1:12345678910111213输入:s = 2024-03-23 双指针 数学
LC 1253. 重构 2 行二进制矩阵 题目描述这是 LeetCode 上的 1253. 重构 2 行二进制矩阵 ,难度为 中等。 给你一个 2 行 n 列的二进制数组: 矩阵是一个二进制矩阵,这意味着矩阵中的每个元素不是 0 就是 1。 第 0 行的元素之和为 upper。 第 1 行的元素之和为 lower。 第 i 列(从 0 开始编号)的元素之和为 colsum[i],colsum 是一个长度为 n 的整数数组。 你需要利用 2024-03-14 模拟 贪心 构造
LC 1797. 设计一个验证系统 题目描述这是 LeetCode 上的 1797. 设计一个验证系统 ,难度为 中等。 你需要设计一个包含验证码的验证系统。 每一次验证中,用户会收到一个新的验证码,这个验证码在 ct 时刻之后 timeToLive 秒过期。 如果验证码被更新了,那么它会在 ct (可能与之前的 ct 不同)时刻延长 timeToLive 秒。 请你实现 AuthenticationManager 类: Auth 2024-03-14 哈希表 链表
LC 1466. 重新规划路线 题目描述这是 LeetCode 上的 1466. 重新规划路线 ,难度为 中等。 n 座城市,从 0 到 n-1 编号,其间共有 n-1 条路线。 因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。 去年,交通运输部决定重新规划路线,以改变交通拥堵的状况。 路线用 connections 表示,其中 $connections[i] = [a, b]$ 表示从城市 a 到 2024-01-18 DFS 图
LC 2646. 最小化旅行的价格总和 题目描述这是 LeetCode 上的 2646. 最小化旅行的价格总和 ,难度为 困难。 现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号。 给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges,其中 $edges[i] = [a{i}, b{i}]$ 表示树中节点 $a{i}$ 和 $b{i}$ 之间存在一条边。 每个节点都关联一个价格。给你一个整数数 2024-01-18 DFS 图
LC 1798. 你能构造出连续值的最大数目 题目描述这是 LeetCode 上的 1798. 你能构造出连续值的最大数目 ,难度为 中等。 给你一个长度为 n 的整数数组 coins,它代表你拥有的 n 个硬币。 第 i 个硬币的值为 coins[i]。如果你从这些硬币中选出一部分硬币,它们的和为 x ,那么称,你可以构造出 x 。 请返回从 0 开始(包括 0 ),你最多能构造出多少个连续整数。 你可能有多个相同值的硬币。 示例 1:12 2024-01-17 数学 脑筋急转弯 排序 构造