LC 97. 交错字符串 题目描述这是 LeetCode 上的 97. 交错字符串 ,难度为 中等。 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: s = s1 + s2 + ... + sn t = t1 + t2 + ... + tm |n - m| <= 1 交 2023-07-25 线性 DP 记忆化搜索
LC 2305. 公平分发饼干 题目描述这是 LeetCode 上的 2305. 公平分发饼干 ,难度为 中等。 给你一个整数数组 cookies,其中 cookies[i] 表示在第 i 个零食包中的饼干数量。另给你一个整数 k 表示等待分发零食包的孩子数量,所有零食包都需要分发。 在同一个零食包中的所有饼干都必须分发给同一个孩子,不能分开。 分发的不公平程度定义为单个孩子在分发过程中能够获得饼干的最大总数。 返回所有分发的最 2023-07-18 位运算 状压 DP
LC 943. 最短超级串 题目描述这是 LeetCode 上的 943. 最短超级串 ,难度为 困难。 给定一个字符串数组 words,找到以 words 中每个字符串作为子字符串的最短字符串。如果有多个有效最短字符串满足题目条件,返回其中 任意一个 即可。 我们可以假设 words 中没有字符串是 words 中另一个字符串的子字符串。 示例 1:12345输入:words = ["alex",&qu 2023-07-17 位运算 状压 DP
LC 1041. 困于环中的机器人 题目描述这是 LeetCode 上的 1041. 困于环中的机器人 ,难度为 中等。 在无限的平面上,机器人最初位于 $(0, 0)$ 处,面朝北方。注意: 北方向 是 y 轴的正方向。 南方向 是 y 轴的负方向。 东方向 是 x 轴的正方向。 西方向 是 x 轴的负方向。 机器人可以接受下列三条指令之一: "G":直走 $1$ 个单位 "L":左转 2023-07-17 模拟 脑筋急转弯
LC 985. 查询后的偶数和 题目描述这是 LeetCode 上的 985. 查询后的偶数和 ,难度为 中等。 给出一个整数数组 A 和一个查询数组 queries。 对于第 i 次查询,有 val = queries[i][0], index = queries[i][1],我们会把 val 加到 A[index] 上。然后,第 i 次查询的答案是 A 中偶数值的和。 此处给定的 index = queries[i][1] 2023-07-17 模拟
LC 1222. 可以攻击国王的皇后 题目描述这是 LeetCode 上的 1222. 可以攻击国王的皇后 ,难度为 中等。 在一个 8x8 的棋盘上,放置着若干「黑皇后」和一个「白国王」。 给定一个由整数坐标组成的数组 queens,表示黑皇后的位置;以及一对坐标 king,表示白国王的位置,返回所有可以攻击国王的皇后的坐标(任意顺序)。 示例 1: 1234567891011输入:queens = [[0,1],[1,0],[4 2023-07-17 模拟 BFS
LC 950. 按递增顺序显示卡牌 题目描述这是 LeetCode 上的 950. 按递增顺序显示卡牌 ,难度为 中等。 牌组中的每张卡牌都对应有一个唯一的整数,你可以按你想要的顺序对这套卡片进行排序。 最初,这些卡牌在牌组里是正面朝下的(即未显示状态)。 现在,重复执行以下步骤,直到显示所有卡牌为止: 从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。 如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。 如果仍有未显示 2023-07-17 模拟 队列 排序 构造
LC 1233. 删除子文件夹 题目描述这是 LeetCode 上的 1233. 删除子文件夹 ,难度为 中等。 你是一位系统管理员,手里有一份文件夹列表 folder,你的任务是要删除该列表中的所有 子文件夹,并以 任意顺序 返回剩下的文件夹。 如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下,那么 folder[i] 就是 folder[j] 的 子文件夹 。 文件夹的「路径」是由一个或多个按以下格式 2023-02-09 字典树
LC 1785. 构成特定和需要添加的最少元素 题目描述这是 LeetCode 上的 1785. 构成特定和需要添加的最少元素 ,难度为 中等。 给你一个整数数组 nums,和两个整数 limit 与 goal。 数组 nums 有一条重要属性:abs(nums[i]) <= limit。 返回使数组元素总和等于 goal 所需要向数组中添加的 最少元素数量 ,添加元素 不应改变 数组中 abs(nums[i]) <= limit 2022-12-16 模拟 贪心
LC 113. 路径总和 II 题目描述这是 LeetCode 上的 113. 路径总和 II ,难度为 中等。 给你二叉树的根节点 root 和一个整数目标和 targetSum,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 123输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[ 2022-12-10 DFS 二叉树
LC 895. 最大频率栈 题目描述这是 LeetCode 上的 895. 最大频率栈 ,难度为 困难。 设计一个类似堆栈的数据结构,将元素推入堆栈,并从堆栈中弹出出现频率最高的元素。 实现 FreqStack 类: FreqStack() 构造一个空的堆栈。 void push(int val) 将一个整数 val 压入栈顶。 int pop() 删除并返回堆栈中出现频率最高的元素。 如果出现频率最高的元素不只一个,则 2022-11-30 哈希表 模拟
LC 1758. 生成交替二进制字符串的最少操作数 题目描述这是 LeetCode 上的 1758. 生成交替二进制字符串的最少操作数 ,难度为 简单。 给你一个仅由字符 '0' 和 '1' 组成的字符串 s 。一步操作中,你可以将任一 '0' 变成 '1' ,或者将 '1' 变成 '0' 。 交替字符串 定义为:如果字符串中不存在相邻两个字符相等的情况 2022-11-29 模拟
LC 813. 最大平均值和的分组 题目描述这是 LeetCode 上的 813. 最大平均值和的分组 ,难度为 中等。 给定数组 nums 和一个整数 m 。 我们将给定的数组 nums 分成最多 m 个相邻的非空子数组,分数由每个子数组内的平均值的总和构成。 注意我们必须使用 nums 数组中的每一个数进行分组,并且分数不一定需要是整数。 返回我们所能得到的最大分数是多少。 答案误差在 $10^{-6}$ 内被视为是正确的。 示 2022-11-28 动态规划 序列 DP 前缀和 数学
LC 882. 细分图中的可到达节点 题目描述这是 LeetCode 上的 882. 细分图中的可到达节点 ,难度为 困难。 给你一个无向图(原始图),图中有 n 个节点,编号从 0 到 n - 1 。 你决定将图中的每条边细分为一条节点链,每条边之间的新节点数各不相同。 图用由边组成的二维数组 edges 表示,其中 $edges[i] = [u{i}, v{i}, cnt{i}]$ 表示原始图中节点 $u{i}$ 和 $v{i}$ 2022-11-26 最短路 单源最短路 Dijkstra SPFA
LC 809. 情感丰富的文字 题目描述这是 LeetCode 上的 809. 情感丰富的文字 ,难度为 中等。 有时候人们会用重复写一些字母来表示额外的感受,比如 "hello" -> "heeellooo", "hi" -> "hiii"。我们将相邻字母都相同的一串字符定义为相同字母组,例如:"h", " 2022-11-25 模拟 双指针