LC 75. 颜色分类 题目描述这是 LeetCode 上的 75. 颜色分类 ,难度为 中等。 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库的 sort 函数的情况下解决这个问题。 示例 1:123输入:nums = [2,0,2,1,1,0]输出:[ 2021-08-20 双指针 排序
LC 85. 最大矩形 题目描述这是 LeetCode 上的 85. 最大矩形 ,难度为 困难。 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例 1:12345输入:matrix = [["1","0","1","0","0"],[" 2021-08-20 前缀和 单调栈
LC 345. 反转字符串中的元音字母 题目描述这是 LeetCode 上的 345. 反转字符串中的元音字母 ,难度为 简单。 编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例 1:123输入:"hello"输出:"holle"示例 2:123输入:"leetcode"输出:"leotcede" 提示: 元音字母不包含字母 “y” 。 2021-08-19 模拟 双指针
LC 552. 学生出勤记录 II 题目描述这是 LeetCode 上的 552. 学生出勤记录 II ,难度为 困难。 可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。 记录中只含下面三种字符: ‘A’:Absent,缺勤 ‘L’:Late,迟到 ‘P’:Present,到场 如果学生能够同时满足下面两个条件,则可以获得出勤奖励: 按总出勤计,学生缺勤(’A’)严格 少于两天。 2021-08-18 动态规划 数学 矩阵快速幂 记忆化搜索 状态机
LC 551. 学生出勤记录 I 题目描述这是 LeetCode 上的 551. 学生出勤记录 I ,难度为 简单。 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符: ‘A’:Absent,缺勤 ‘L’:Late,迟到 ‘P’:Present,到场 如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励: 按 总出勤 计,学生缺勤(’A’)严格 少 2021-08-17 模拟
LC 526. 优美的排列 题目描述这是 LeetCode 上的 526. 优美的排列 ,难度为 中等。 假设有从 $1$ 到 $N$ 的 $N$ 个整数,如果从这 $N$ 个数字中成功构造出一个数组,使得数组的第 $i$ 位 ($1 <= i <= N$) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。 条件: 第 $i$ 位的数字能被 $i$ 整除 $i$ 能被第 $i$ 位上的数字整除 现 2021-08-16 动态规划 位运算 状压 DP
LC 576. 出界的路径数 题目描述这是 LeetCode 上的 576. 出界的路径数 ,难度为 中等。 给你一个大小为 m x n 的网格和一个球。球的起始坐标为 [startRow, startColumn]。 你可以将球移到在四个方向上相邻的单元格内(可以穿过网格边界到达网格之外)。 你最多可以移动 maxMove 次球。 给你五个整数 m、n、maxMove、startRow 以及 startColumn,找出并返 2021-08-15 动态规划 记忆化搜索 路径 DP
LC 1583. 统计不开心的朋友 题目描述这是 LeetCode 上的 1583. 统计不开心的朋友 ,难度为 中等。 给你一份 n 位朋友的亲近程度列表,其中 n 总是偶数 。 对每位朋友 i,preferences[i] 包含一份 按亲近程度从高到低排列 的朋友列表。 换句话说,排在列表前面的朋友与 i 的亲近程度比排在列表后面的朋友更高。每个列表中的朋友均以 0 到 n-1 之间的整数表示。 所有的朋友被分成几对,配对情况以 2021-08-14 哈希表 模拟
LC 233. 数字 1 的个数 题目描述这是 LeetCode 上的 233. 数字 1 的个数 ,难度为 困难。 给定一个整数 $n$,计算所有小于等于 $n$ 的非负整数中数字 $1$ 出现的个数。 示例 1:123输入:n = 13输出:6示例 2:123输入:n = 0输出:0 提示: 0 <= n <= $2 * 10^9$ 基本分析这是一道经典的「数位 DP」模板题的简化版,原题在 这里 。 这几天 2021-08-13 动态规划 模拟 数位 DP
LC 516. 最长回文子序列 题目描述这是 LeetCode 上的 516. 最长回文子序列 ,难度为 中等。 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 示例 1:12345输入:s = "bbbab"输出:4解释:一个可能的最长回文子序列为 "bbbb" 。示例 2:1 2021-08-12 动态规划 区间 DP
LC 446. 等差数列划分 II - 子序列 题目描述这是 LeetCode 上的 446. 等差数列划分 II - 子序列 ,难度为 困难。 给你一个整数数组 nums ,返回 nums 中所有 等差子序列 的数目。 如果一个序列中 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该序列为等差序列。 例如,[1, 3, 5, 7, 9]、[7, 7, 7, 7] 和 [3, -1, -5, -9] 都是等差序列。 再例如,[1, 1, 2021-08-11 动态规划 序列 DP 容斥原理 数学
LC 413. 等差数列划分 题目描述这是 LeetCode 上的 413. 等差数列划分 ,难度为 中等。 如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。 给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。 子数组 是数组中的一个连续序列。 示例 1:1234 2021-08-10 模拟 双指针 数学
LC 313. 超级丑数 题目描述这是 LeetCode 上的 313. 超级丑数 ,难度为 中等。 超级丑数 是一个正整数,并满足其所有质因数都出现在质数数组 primes 中。 给你一个整数 n 和一个整数数组 primes ,返回第 n 个 超级丑数 。 题目数据保证第 n 个 超级丑数 在 32-bit 带符号整数范围内。 示例 1:12345输入:n = 12, primes = [2,7,13,19]输出:32 2021-08-09 优先队列(堆) 多路归并
LC 1137. 第 N 个泰波那契数 题目描述这是 LeetCode 上的 1137. 第 N 个泰波那契数 ,难度为 简单。 泰波那契序列 $T_{n}$ 定义如下: $T{0} = 0$, $T{1} = 1$, $T{2} = 1$, 且在 $n >= 0$ 的条件下 $T{n+3} = T{n} + T{n+1} + T_{n+2}$ 给你整数 $n$,请返回第 $n$ 个泰波那契数 $T_n$ 的值。 示例 1:12 2021-08-08 动态规划 递归 递推 矩阵快速幂 打表
LC 457. 环形数组是否存在循环 题目描述这是 LeetCode 上的 457. 环形数组是否存在循环 ,难度为 中等。 存在一个不含 $0$ 的 环形 数组 $nums$ ,每个 $nums[i]$ 都表示位于下标 $i$ 的角色应该向前或向后移动的下标个数: 如果 $nums[i]$ 是正数,向前 移动 $nums[i]$ 步 如果 $nums[i]$ 是负数,向后 移动 $nums[i]$ 步 因为数组是环形的,所以可以 2021-08-07 模拟 图