LC 436. 寻找右区间 题目描述这是 LeetCode 上的 436. 寻找右区间 ,难度为 中等。 给你一个区间数组 intervals ,其中 $intervals[i] = [start_i, end_i]$,且每个 $start_i$ 都 不同 。 区间 $i$ 的 右侧区间 可以记作区间 $j$ ,并满足 $start_j >= end_i$ ,且 $start_j$ 最小化 。 返回一个由每个区间 $i 2022-05-20 双指针 二分 排序 莫队算法
LC 462. 最少移动次数使数组元素相等 II 题目描述这是 LeetCode 上的 462. 最少移动次数使数组元素相等 II ,难度为 简单。 给你一个长度为 $n$ 的整数数组 $nums$,返回使所有数组元素相等需要的最少移动数。 在一步操作中,你可以使数组中的一个元素加 $1$ 或者减 $1$ 。 示例 1:1234567输入:nums = [1,2,3]输出:2解释:只需要两步操作(每步操作指南使一个元素加 1 或减 1):[1,2 2022-05-19 数学
LC 668. 乘法表中第k小的数 题目描述这是 LeetCode 上的 668. 乘法表中第k小的数 ,难度为 困难。 几乎每一个人都用 乘法表,但是你能在乘法表中快速找到第 $k$ 小的数字吗? 给定高度 $m$ 、宽度 $n$ 的一张 $m \times n$ 的乘法表,以及正整数 $k$,你需要返回表中第 $k$ 小的数字。 例 1:1234567891011输入: m = 3, n = 3, k = 5输出: 3解释: 乘 2022-05-18 二分 计数
LC 327. 区间和的个数 题目描述这是 LeetCode 上的 327. 区间和的个数 ,难度为 困难。 给你一个整数数组 nums 以及两个整数 lower 和 upper 。求数组中,值位于范围 $[lower, upper]$ (包含 lower 和 upper)之内的 区间和的个数 。 区间和 $S(i, j)$ 表示在 nums 中,位置从 $i$ 到 $j$ 的元素之和,包含 $i$ 和 $j$ (i ≤ j) 2022-05-17 前缀和 树状数组 离散化 线段树(动态开点)
LC 953. 验证外星语词典 题目描述这是 LeetCode 上的 953. 验证外星语词典 ,难度为 简单。 某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。 给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 false。 示例 1:12345输入:words = [&q 2022-05-17 模拟 排序
LC 面试题 04.06. 后继者 题目描述这是 LeetCode 上的 面试题 04.06. 后继者 ,难度为 中等。 设计一个算法,找出二叉搜索树中指定节点的 “下一个” 节点(也即中序后继)。 如果指定节点没有对应的 “下一个” 节点,则返回 null。 示例 1:1234567输入: root = [2,1,3], p = 1 2 / \1 3输出: 2示例 2:1234567891011输入: root = [5,3 2022-05-16 BST 递归
LC 812. 最大三角形面积 题目描述这是 LeetCode 上的 812. 最大三角形面积 ,难度为 简单。 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。 示例:123456输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]]输出: 2解释: 这五个点如下图所示。组成的橙色三角形是最大的,面积为2。 注意: $3 <= points.length 2022-05-15 模拟
LC 406. 根据身高重建队列 题目描述这是 LeetCode 上的 406. 根据身高重建队列 ,难度为 中等。 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 $people[i] = [h_i, k_i]$ 表示第 $i$ 个人的身高为 $h_i$ ,前面 正好 有 $k_i$ 个身高大于或等于 $h_i$ 的人。 请你重新构造并返回输入数组 people 所表示的队列 2022-05-14 二分 排序 构造 树状数组
LC 691. 贴纸拼词 题目描述这是 LeetCode 上的 691. 贴纸拼词 ,难度为 困难。 我们有 $n$ 种不同的贴纸。每个贴纸上都有一个小写的英文单词。 您想要拼写出给定的字符串 target ,方法是从收集的贴纸中切割单个字母并重新排列它们。如果你愿意,你可以多次使用每个贴纸,每个贴纸的数量是无限的。 返回你需要拼出 target 的最小贴纸数量。如果任务不可能,则返回 $-1$ 。 注意:在所有的测试用例 2022-05-14 动态规划 DFS 状态压缩 二进制枚举 记忆化搜索 状压 DP 爆搜
LC 面试题 01.05. 一次编辑 题目描述这是 LeetCode 上的 面试题 01.05. 一次编辑 ,难度为 中等。 字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。 示例 1:12345输入: first = "pale"second = "ple"输出: True示例 2:12345输入: fir 2022-05-13 模拟 双指针
LC 944. 删列造序 题目描述这是 LeetCode 上的 944. 删列造序 ,难度为 简单。 给你由 $n$ 个小写字母字符串组成的数组 strs,其中每个字符串长度相等。 这些字符串可以每个一行,排成一个网格。例如,strs = ["abc", "bce", "cae"] 可以排列为:123abcbcecae你需要找出并删除 不是按字典序升序排列的 列。 2022-05-12 模拟
LC 449. 序列化和反序列化二叉搜索树 题目描述这是 LeetCode 上的 449. 序列化和反序列化二叉搜索树 ,难度为 中等。 序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。 设计一个算法来序列化和反序列化 二叉搜索树 。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列 2022-05-11 二分 BST 前序遍历
LC 1728. 猫和老鼠 II 题目描述这是 LeetCode 上的 1728. 猫和老鼠 II ,难度为 困难。 一只猫和一只老鼠在玩一个叫做猫和老鼠的游戏。 它们所处的环境设定是一个 rows x cols 的方格 grid ,其中每个格子可能是一堵墙、一块地板、一位玩家(猫或者老鼠)或者食物。 玩家由字符 'C' (代表猫)和 'M' (代表老鼠)表示。 地板由字符 '.' 2022-05-10 动态规划 博弈论 记忆化搜索
LC 942. 增减字符串匹配 题目描述这是 LeetCode 上的 942. 增减字符串匹配 ,难度为 简单。 由范围 $[0,n]$ 内所有整数组成的 $n + 1$ 个整数的排列序列可以表示为长度为 $n$ 的字符串 s ,其中: 如果 perm[i] < perm[i + 1] ,那么 s[i] == 'I' 如果 perm[i] > perm[i + 1] ,那么 s[i] ==  2022-05-09 双指针 贪心 构造
LC 442. 数组中重复的数据 题目描述这是 LeetCode 上的 442. 数组中重复的数据 ,难度为 中等。 给你一个长度为 $n$ 的整数数组 nums,其中 nums 的所有整数都在范围 $[1, n]$ 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。 你必须设计并实现一个时间复杂度为 $O(n)$ 且仅使用常量额外空间的算法解决此问题。 示例 1:123输入:nums = [ 2022-05-08 数组 原地哈希