LC 719. 找出第 K 小的数对距离 题目描述这是 LeetCode 上的 719. 找出第 K 小的数对距离 ,难度为 困难。 数对 $(a,b)$ 由整数 a 和 b 组成,其数对距离定义为 a 和 b 的绝对差值。 给你一个整数数组 nums 和一个整数 $k$ ,数对由 $nums[i]$ 和 $nums[j]$ 组成且满足 $0 <= i < j < nums.length$ 。 返回 所有数对距离中 第 2022-06-15 双指针 二分
LC 498. 对角线遍历 题目描述这是 LeetCode 上的 498. 对角线遍历 ,难度为 中等。 给你一个大小为 m x n 的矩阵 mat,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 示例 1:123输入:mat = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,4,7,5,3,6,8,9]示例 2:123输入:mat = [[1,2],[3,4]]输出:[1,2,3,4] 提示 2022-06-14 模拟
LC 1051. 高度检查器 题目描述这是 LeetCode 上的 1051. 高度检查器 ,难度为 简单。 学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。 排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 $0$ 开始)。 给你一个整数数组 heights,表示 当前学生站位 的高度情况。heights 2022-06-13 模拟 排序
LC 1737. 满足三条件之一需改变的最少字符数 题目描述这是 LeetCode 上的 1737. 满足三条件之一需改变的最少字符数 ,难度为 中等。 给你两个字符串 a 和 b ,二者均由小写字母组成。 一步操作中,你可以将 a 或 b 中的 任一字符 改变为 任一小写字母 。 操作的最终目标是满足下列三个条件 之一 : a 中的 每个字母 在字母表中 严格小于 b 中的 每个字母 。 b 中的 每个字母 在字母表中 严格小于 a 中的 2022-06-12 模拟 枚举 计数
LC 890. 查找和替换模式 题目描述这是 LeetCode 上的 890. 查找和替换模式 ,难度为 中等。 你有一个单词列表 words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配。 如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们就得到了所需的单词,那么单词与模式是匹配的。 (回想一下,字母的排列是从字母到字母的双射:每个字母映射到另一个字母,没有两个字母 2022-06-12 哈希表 模拟
LC 926. 将字符串翻转到单调递增 题目描述这是 LeetCode 上的 926. 将字符串翻转到单调递增 ,难度为 中等。 如果一个二进制字符串,是以一些 $0$(可能没有 $0$)后面跟着一些 $1$(也可能没有 $1$)的形式组成的,那么该字符串是 单调递增 的。 给你一个二进制字符串 s,你可以将任何 $0$ 翻转为 $1$ 或者将 $1$ 翻转为 $0$ 。 返回使 s 单调递增的最小翻转次数。 示例 1:12345输入: 2022-06-11 动态规划 序列 DP 二分 前缀和 贪心 容斥原理 枚举 LIS
LC 730. 统计不同回文子序列 题目描述这是 LeetCode 上的 730. 统计不同回文子序列 ,难度为 困难。 给定一个字符串 s,返回 s 中不同的非空「回文子序列」个数 。 通过从 s 中删除 $0$ 个或多个字符来获得子序列。 如果一个字符序列与它反转后的字符序列一致,那么它是「回文字符序列」。 如果有某个 $i$ , 满足 $a_i$ != $b_i$ ,则两个序列 a1, a2, ... 和 b1, b2, .. 2022-06-10 动态规划 区间 DP
LC 497. 非重叠矩形中的随机点 题目描述这是 LeetCode 上的 497. 非重叠矩形中的随机点 ,难度为 中等。 给定一个由非重叠的轴对齐矩形的数组 rects,其中 $rects[i] = [a_i, b_i, x_i, y_i]$ 表示 $(a_i, b_i)$ 是第 $i$ 个矩形的左下角点,$(x_i, y_i)$ 是第 $i$ 个矩形的右上角点。 设计一个算法来随机挑选一个被某一矩形覆盖的整数点。矩形周长上的点也 2022-06-09 二分 前缀和 随机化
LC 1037. 有效的回旋镖 题目描述这是 LeetCode 上的 1037. 有效的回旋镖 ,难度为 简单。 给定一个数组 points,其中 $points[i] = [x_i, y_i]$ 表示 X-Y 平面上的一个点,如果这些点构成一个 回旋镖 则返回 true。 回旋镖 定义为一组三个点,这些点 各不相同 且 不在一条直线上 。 示例 1:123输入:points = [[1,1],[2,3],[3,2]]输出:tr 2022-06-08 数学 计算几何
LC 875. 爱吃香蕉的珂珂 题目描述这是 LeetCode 上的 875. 爱吃香蕉的珂珂 ,难度为 中等。 珂珂喜欢吃香蕉。这里有 n 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 h 小时后回来。 珂珂可以决定她吃香蕉的速度 k (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 k 根。如果这堆香蕉少于 k 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。 珂珂喜欢慢 2022-06-07 二分
LC 732. 我的日程安排表 III 题目描述这是 LeetCode 上的 732. 我的日程安排表 III ,难度为 困难。 当 $k$ 个日程安排有一些时间上的交叉时(例如 $k$ 个日程安排都在同一时间内),就会产生 $k$ 次预订。 给你一些日程安排 $[start, end)$ ,请你在每个日程安排添加后,返回一个整数 $k$ ,表示所有先前日程安排会产生的最大 $k$ 次预订。 实现一个 MyCalendarThree 类 2022-06-06 线段树 分块 线段树(动态开点)
LC 478. 在圆内随机生成点 题目描述这是 LeetCode 上的 478. 在圆内随机生成点 ,难度为 中等。 给定圆的半径和圆心的位置,实现函数 randPoint,在圆中产生均匀随机点。 实现 Solution 类: Solution(double radius, double x_center, double y_center) 用圆的半径 radius 和圆心的位置 $(x_center, y_center)$ 初 2022-06-05 数学 随机化
LC 929. 独特的电子邮件地址 题目描述这是 LeetCode 上的 929. 独特的电子邮件地址 ,难度为 简单。 每个 有效电子邮件地址 都由一个 本地名 和一个 域名 组成,以 '@' 符号分隔。除小写字母之外,电子邮件地址还可以含有一个或多个 '.' 或 '+' 。 例如,在 alice@leetcode.com 中, alice 是 本地名 ,而 leetcode.co 2022-06-04 模拟
LC 238. 除自身以外数组的乘积 题目描述这是 LeetCode 上的 238. 除自身以外数组的乘积 ,难度为 中等。 给你一个整数数组 nums,返回 数组 answer,其中 $answer[i]$ 等于 nums 中除 $nums[i]$ 之外其余各元素的乘积 。 题目数据 保证 数组 nums 之中任意元素的全部前缀元素和后缀的乘积都在 $32$ 位 整数范围内。 请不要使用除法,且在 $O(n)$ 时间复杂度内完成此 2022-06-03 前缀和 容斥原理
LC 829. 连续整数求和 题目描述这是 LeetCode 上的 829. 连续整数求和 ,难度为 困难。 给定一个正整数 $n$,返回连续正整数满足所有数字之和为 $n$ 的组数 。 示例 1:12345输入: n = 5输出: 2解释: 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5。示例 2:12345输入: n = 9输出: 3解释: 9 = 4 + 5 = 2 + 3 + 4示例 3:12 2022-06-03 数学 数论