0.6 LeetCode 题解(按分类排序,推荐 ★★★)
大约 82 分钟
0.6 LeetCode 题解(按分类排序,推荐 ★★★)
LeetCode 题解(按分类排序,推荐刷题列表 ★★★)
第 1 章 数组
数组基础题目
数组操作题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0189. 轮转数组 | 题解 | 数组、数学、双指针 | 中等 |
0066. 加一 | 题解 | 数组、数学 | 简单 |
0724. 寻找数组的中心下标 | 题解 | 数组、前缀和 | 简单 |
0485. 最大连续 1 的个数 | 题解 | 数组 | 简单 |
0238. 除自身以外数组的乘积 | 题解 | 数组、前缀和 | 中等 |
二维数组题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0498. 对角线遍历 | 题解 | 数组、矩阵、模拟 | 中等 |
0048. 旋转图像 | 题解 | 数组、数学、矩阵 | 中等 |
0073. 矩阵置零 | 题解 | 数组、哈希表、矩阵 | 中等 |
0054. 螺旋矩阵 | 题解 | 数组、矩阵、模拟 | 中等 |
0059. 螺旋矩阵 II | 题解 | 数组、矩阵、模拟 | 中等 |
0289. 生命游戏 | 题解 | 数组、矩阵、模拟 | 中等 |
排序算法题目
冒泡排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
LCR 164. 破解闯关密码 | 题解 | 贪心、字符串、排序 | 中等 |
0283. 移动零 | 题解 | 数组、双指针 | 简单 |
选择排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0215. 数组中的第K个最大元素 | 题解 | 数组、分治、快速选择、排序、堆(优先队列) | 中等 |
插入排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0075. 颜色分类 | 题解 | 数组、双指针、排序 | 中等 |
希尔排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0912. 排序数组 | 题解 | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 |
0506. 相对名次 | 题解 | 数组、排序、堆(优先队列) | 简单 |
归并排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0912. 排序数组 | 题解 | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 |
0088. 合并两个有序数组 | 题解 | 数组、双指针、排序 | 简单 |
LCR 170. 交易逆序对的总数 | 题解 | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 |
0315. 计算右侧小于当前元素的个数 | 题解 | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 |
快速排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0912. 排序数组 | 题解 | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 |
0169. 多数元素 | 题解 | 数组、哈希表、分治、计数、排序 | 简单 |
堆排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0912. 排序数组 | 题解 | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 |
0215. 数组中的第K个最大元素 | 题解 | 数组、分治、快速选择、排序、堆(优先队列) | 中等 |
LCR 159. 库存管理 III | 题解 | 数组、分治、快速选择、排序、堆(优先队列) | 简单 |
计数排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0912. 排序数组 | 题解 | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 |
1122. 数组的相对排序 | 题解 | 数组、哈希表、计数排序、排序 | 简单 |
桶排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0912. 排序数组 | 题解 | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 |
0220. 存在重复元素 III | 题解 | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 |
0164. 最大间距 | 题解 | 数组、桶排序、基数排序、排序 | 中等 |
基数排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0164. 最大间距 | 题解 | 数组、桶排序、基数排序、排序 | 中等 |
0561. 数组拆分 | 题解 | 贪心、数组、计数排序、排序 | 简单 |
其他排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0217. 存在重复元素 | 题解 | 数组、哈希表、排序 | 简单 |
0136. 只出现一次的数字 | 题解 | 位运算、数组 | 简单 |
0056. 合并区间 | 题解 | 数组、排序 | 中等 |
0179. 最大数 | 题解 | 贪心、数组、字符串、排序 | 中等 |
0384. 打乱数组 | 题解 | 设计、数组、数学、随机化 | 中等 |
LCR 164. 破解闯关密码 | 题解 | 贪心、字符串、排序 | 中等 |
二分查找题目
二分下标题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0704. 二分查找 | 题解 | 数组、二分查找 | 简单 |
0374. 猜数字大小 | 题解 | 二分查找、交互 | 简单 |
0035. 搜索插入位置 | 题解 | 数组、二分查找 | 简单 |
0034. 在排序数组中查找元素的第一个和最后一个位置 | 题解 | 数组、二分查找 | 中等 |
0167. 两数之和 II - 输入有序数组 | 题解 | 数组、双指针、二分查找 | 中等 |
0153. 寻找旋转排序数组中的最小值 | 题解 | 数组、二分查找 | 中等 |
0154. 寻找旋转排序数组中的最小值 II | 题解 | 数组、二分查找 | 困难 |
0033. 搜索旋转排序数组 | 题解 | 数组、二分查找 | 中等 |
0081. 搜索旋转排序数组 II | 题解 | 数组、二分查找 | 中等 |
0278. 第一个错误的版本 | 题解 | 二分查找、交互 | 简单 |
0162. 寻找峰值 | 题解 | 数组、二分查找 | 中等 |
0852. 山脉数组的峰顶索引 | 题解 | 数组、二分查找 | 中等 |
1095. 山脉数组中查找目标值 | 题解 | 数组、二分查找、交互 | 困难 |
0744. 寻找比目标字母大的最小字母 | 题解 | 数组、二分查找 | 简单 |
0004. 寻找两个正序数组的中位数 | 题解 | 数组、二分查找、分治 | 困难 |
0074. 搜索二维矩阵 | 题解 | 数组、二分查找、矩阵 | 中等 |
0240. 搜索二维矩阵 II | 题解 | 数组、二分查找、分治、矩阵 | 中等 |
二分答案题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0069. x 的平方根 | 题解 | 数学、二分查找 | 简单 |
0287. 寻找重复数 | 题解 | 位运算、数组、双指针、二分查找 | 中等 |
0050. Pow(x, n) | 题解 | 递归、数学 | 中等 |
0367. 有效的完全平方数 | 题解 | 数学、二分查找 | 简单 |
1300. 转变数组后最接近目标值的数组和 | 题解 | 数组、二分查找、排序 | 中等 |
0400. 第 N 位数字 | 题解 | 数学、二分查找 | 中等 |
复杂的二分查找问题
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0875. 爱吃香蕉的珂珂 | 题解 | 数组、二分查找 | 中等 |
0410. 分割数组的最大值 | 题解 | 贪心、数组、二分查找、动态规划、前缀和 | 困难 |
0209. 长度最小的子数组 | 题解 | 数组、二分查找、前缀和、滑动窗口 | 中等 |
0658. 找到 K 个最接近的元素 | 题解 | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 |
0270. 最接近的二叉搜索树值 | 题解 | 树、深度优先搜索、二叉搜索树、二分查找、二叉树 | 简单 |
0702. 搜索长度未知的有序数组 | 题解 | 数组、二分查找、交互 | 中等 |
0349. 两个数组的交集 | 题解 | 数组、哈希表、双指针、二分查找、排序 | 简单 |
0350. 两个数组的交集 II | 题解 | 数组、哈希表、双指针、二分查找、排序 | 简单 |
0287. 寻找重复数 | 题解 | 位运算、数组、双指针、二分查找 | 中等 |
0719. 找出第 K 小的数对距离 | 题解 | 数组、双指针、二分查找、排序 | 困难 |
0259. 较小的三数之和 | 题解 | 数组、双指针、二分查找、排序 | 中等 |
1011. 在 D 天内送达包裹的能力 | 题解 | 数组、二分查找 | 中等 |
1482. 制作 m 束花所需的最少天数 | 题解 | 数组、二分查找 | 中等 |
双指针题目
对撞指针题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0167. 两数之和 II - 输入有序数组 | 题解 | 数组、双指针、二分查找 | 中等 |
0344. 反转字符串 | 题解 | 双指针、字符串 | 简单 |
0345. 反转字符串中的元音字母 | 题解 | 双指针、字符串 | 简单 |
0125. 验证回文串 | 题解 | 双指针、字符串 | 简单 |
0011. 盛最多水的容器 | 题解 | 贪心、数组、双指针 | 中等 |
0611. 有效三角形的个数 | 题解 | 贪心、数组、双指针、二分查找、排序 | 中等 |
0015. 三数之和 | 题解 | 数组、双指针、排序 | 中等 |
0016. 最接近的三数之和 | 题解 | 数组、双指针、排序 | 中等 |
0018. 四数之和 | 题解 | 数组、双指针、排序 | 中等 |
0259. 较小的三数之和 | 题解 | 数组、双指针、二分查找、排序 | 中等 |
0658. 找到 K 个最接近的元素 | 题解 | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 |
1099. 小于 K 的两数之和 | 题解 | 数组、双指针、二分查找、排序 | 简单 |
0075. 颜色分类 | 题解 | 数组、双指针、排序 | 中等 |
0360. 有序转化数组 | 题解 | 数组、数学、双指针、排序 | 中等 |
0977. 有序数组的平方 | 题解 | 数组、双指针、排序 | 简单 |
0881. 救生艇 | 题解 | 贪心、数组、双指针、排序 | 中等 |
0042. 接雨水 | 题解 | 栈、数组、双指针、动态规划、单调栈 | 困难 |
0443. 压缩字符串 | 题解 | 双指针、字符串 | 中等 |
快慢指针题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0026. 删除有序数组中的重复项 | 题解 | 数组、双指针 | 简单 |
0080. 删除有序数组中的重复项 II | 题解 | 数组、双指针 | 中等 |
0027. 移除元素 | 题解 | 数组、双指针 | 简单 |
0283. 移动零 | 题解 | 数组、双指针 | 简单 |
0845. 数组中的最长山脉 | 题解 | 数组、双指针、动态规划、枚举 | 中等 |
0088. 合并两个有序数组 | 题解 | 数组、双指针、排序 | 简单 |
0719. 找出第 K 小的数对距离 | 题解 | 数组、双指针、二分查找、排序 | 困难 |
0334. 递增的三元子序列 | 题解 | 贪心、数组 | 中等 |
0978. 最长湍流子数组 | 题解 | 数组、动态规划、滑动窗口 | 中等 |
LCR 139. 训练计划 I | 题解 | 数组、双指针、排序 | 简单 |
分离双指针题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0350. 两个数组的交集 II | 题解 | 数组、哈希表、双指针、二分查找、排序 | 简单 |
0925. 长按键入 | 题解 | 双指针、字符串 | 简单 |
0844. 比较含退格的字符串 | 题解 | 栈、双指针、字符串、模拟 | 简单 |
1229. 安排会议日程 | 题解 | 数组、双指针、排序 | 中等 |
0415. 字符串相加 | 题解 | 数学、字符串、模拟 | 简单 |
0392. 判断子序列 | 题解 | 双指针、字符串、动态规划 | 简单 |
滑动窗口题目
固定长度窗口题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
1343. 大小为 K 且平均值大于等于阈值的子数组数目 | 题解 | 数组、滑动窗口 | 中等 |
0643. 子数组最大平均数 I | 题解 | 数组、滑动窗口 | 简单 |
1052. 爱生气的书店老板 | 题解 | 数组、滑动窗口 | 中等 |
1423. 可获得的最大点数 | 题解 | 数组、前缀和、滑动窗口 | 中等 |
1456. 定长子串中元音的最大数目 | 题解 | 字符串、滑动窗口 | 中等 |
0567. 字符串的排列 | 题解 | 哈希表、双指针、字符串、滑动窗口 | 中等 |
1100. 长度为 K 的无重复字符子串 | 题解 | 哈希表、字符串、滑动窗口 | 中等 |
1151. 最少交换次数来组合所有的 1 | 题解 | 数组、滑动窗口 | 中等 |
1176. 健身计划评估 | 题解 | 数组、滑动窗口 | 简单 |
0438. 找到字符串中所有字母异位词 | 题解 | 哈希表、字符串、滑动窗口 | 中等 |
0995. K 连续位的最小翻转次数 | 题解 | 位运算、队列、数组、前缀和、滑动窗口 | 困难 |
0683. K 个关闭的灯泡 | 题解 | 树状数组、线段树、队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 困难 |
0220. 存在重复元素 III | 题解 | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 |
0239. 滑动窗口最大值 | 题解 | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 |
0480. 滑动窗口中位数 | 题解 | 数组、哈希表、滑动窗口、堆(优先队列) | 困难 |
不定长度窗口题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0674. 最长连续递增序列 | 题解 | 数组 | 简单 |
0485. 最大连续 1 的个数 | 题解 | 数组 | 简单 |
0487. 最大连续1的个数 II | 题解 | 数组、动态规划、滑动窗口 | 中等 |
0076. 最小覆盖子串 | 题解 | 哈希表、字符串、滑动窗口 | 困难 |
0718. 最长重复子数组 | 题解 | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 |
0209. 长度最小的子数组 | 题解 | 数组、二分查找、前缀和、滑动窗口 | 中等 |
1004. 最大连续1的个数 III | 题解 | 数组、二分查找、前缀和、滑动窗口 | 中等 |
1658. 将 x 减到 0 的最小操作数 | 题解 | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 |
0424. 替换后的最长重复字符 | 题解 | 哈希表、字符串、滑动窗口 | 中等 |
0003. 无重复字符的最长子串 | 题解 | 哈希表、字符串、滑动窗口 | 中等 |
1695. 删除子数组的最大得分 | 题解 | 数组、哈希表、滑动窗口 | 中等 |
1208. 尽可能使字符串相等 | 题解 | 字符串、二分查找、前缀和、滑动窗口 | 中等 |
1493. 删掉一个元素以后全为 1 的最长子数组 | 题解 | 数组、动态规划、滑动窗口 | 中等 |
0727. 最小窗口子序列 | 题解 | 字符串、动态规划、滑动窗口 | 困难 |
0159. 至多包含两个不同字符的最长子串 | 题解 | 哈希表、字符串、滑动窗口 | 中等 |
0340. 至多包含 K 个不同字符的最长子串 | 题解 | 哈希表、字符串、滑动窗口 | 中等 |
0795. 区间子数组个数 | 题解 | 数组、双指针 | 中等 |
0992. K 个不同整数的子数组 | 题解 | 数组、哈希表、计数、滑动窗口 | 困难 |
0713. 乘积小于 K 的子数组 | 题解 | 数组、二分查找、前缀和、滑动窗口 | 中等 |
0904. 水果成篮 | 题解 | 数组、哈希表、滑动窗口 | 中等 |
1358. 包含所有三种字符的子字符串数目 | 题解 | 哈希表、字符串、滑动窗口 | 中等 |
0467. 环绕字符串中唯一的子字符串 | 题解 | 字符串、动态规划 | 中等 |
1438. 绝对差不超过限制的最长连续子数组 | 题解 | 队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 中等 |
第 2 章 链表
链表经典题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0707. 设计链表 | 题解 | 设计、链表 | 中等 |
0083. 删除排序链表中的重复元素 | 题解 | 链表 | 简单 |
0082. 删除排序链表中的重复元素 II | 题解 | 链表、双指针 | 中等 |
0206. 反转链表 | 题解 | 递归、链表 | 简单 |
0092. 反转链表 II | 题解 | 链表 | 中等 |
0025. K 个一组翻转链表 | 题解 | 递归、链表 | 困难 |
0203. 移除链表元素 | 题解 | 递归、链表 | 简单 |
0328. 奇偶链表 | 题解 | 链表 | 中等 |
0234. 回文链表 | 题解 | 栈、递归、链表、双指针 | 简单 |
0430. 扁平化多级双向链表 | 题解 | 深度优先搜索、链表、双向链表 | 中等 |
0138. 随机链表的复制 | 题解 | 哈希表、链表 | 中等 |
0061. 旋转链表 | 题解 | 链表、双指针 | 中等 |
链表排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0148. 排序链表 | 题解 | 链表、双指针、分治、排序、归并排序 | 中等 |
0021. 合并两个有序链表 | 题解 | 递归、链表 | 简单 |
0023. 合并 K 个升序链表 | 题解 | 链表、分治、堆(优先队列)、归并排序 | 困难 |
0147. 对链表进行插入排序 | 题解 | 链表、排序 | 中等 |
链表双指针题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0141. 环形链表 | 题解 | 哈希表、链表、双指针 | 简单 |
0142. 环形链表 II | 题解 | 哈希表、链表、双指针 | 中等 |
0160. 相交链表 | 题解 | 哈希表、链表、双指针 | 简单 |
0019. 删除链表的倒数第 N 个结点 | 题解 | 链表、双指针 | 中等 |
0876. 链表的中间结点 | 题解 | 链表、双指针 | 简单 |
LCR 140. 训练计划 II | 题解 | 链表、双指针 | 简单 |
0143. 重排链表 | 题解 | 栈、递归、链表、双指针 | 中等 |
0002. 两数相加 | 题解 | 递归、链表、数学 | 中等 |
0445. 两数相加 II | 题解 | 栈、链表、数学 | 中等 |
第 3 章 堆栈、队列、哈希表
堆栈基础题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
1047. 删除字符串中的所有相邻重复项 | 题解 | 栈、字符串 | 简单 |
0155. 最小栈 | 题解 | 栈、设计 | 中等 |
0020. 有效的括号 | 题解 | 栈、字符串 | 简单 |
0227. 基本计算器 II | 题解 | 栈、数学、字符串 | 中等 |
0739. 每日温度 | 题解 | 栈、数组、单调栈 | 中等 |
0150. 逆波兰表达式求值 | 题解 | 栈、数组、数学 | 中等 |
0232. 用栈实现队列 | 题解 | 栈、设计、队列 | 简单 |
LCR 125. 图书整理 II | 题解 | 栈、设计、队列 | 简单 |
0394. 字符串解码 | 题解 | 栈、递归、字符串 | 中等 |
0032. 最长有效括号 | 题解 | 栈、字符串、动态规划 | 困难 |
0946. 验证栈序列 | 题解 | 栈、数组、模拟 | 中等 |
LCR 123. 图书整理 I | 题解 | 栈、递归、链表、双指针 | 简单 |
0071. 简化路径 | 题解 | 栈、字符串 | 中等 |
单调栈
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0739. 每日温度 | 题解 | 栈、数组、单调栈 | 中等 |
0496. 下一个更大元素 I | 题解 | 栈、数组、哈希表、单调栈 | 简单 |
0503. 下一个更大元素 II | 题解 | 栈、数组、单调栈 | 中等 |
0901. 股票价格跨度 | 题解 | 栈、设计、数据流、单调栈 | 中等 |
0084. 柱状图中最大的矩形 | 题解 | 栈、数组、单调栈 | 困难 |
0316. 去除重复字母 | 题解 | 栈、贪心、字符串、单调栈 | 中等 |
0042. 接雨水 | 题解 | 栈、数组、双指针、动态规划、单调栈 | 困难 |
0085. 最大矩形 | 题解 | 栈、数组、动态规划、矩阵、单调栈 | 困难 |
0862. 和至少为 K 的最短子数组 | 题解 | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 |
队列基础题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0622. 设计循环队列 | 题解 | 设计、队列、数组、链表 | 中等 |
0346. 数据流中的移动平均值 | 题解 | 设计、队列、数组、数据流 | 简单 |
0225. 用队列实现栈 | 题解 | 栈、设计、队列 | 简单 |
优先队列题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0703. 数据流中的第 K 大元素 | 题解 | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 |
0347. 前 K 个高频元素 | 题解 | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 |
0451. 根据字符出现频率排序 | 题解 | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 |
0973. 最接近原点的 K 个点 | 题解 | 几何、数组、数学、分治、快速选择、排序、堆(优先队列) | 中等 |
1296. 划分数组为连续数字的集合 | 题解 | 贪心、数组、哈希表、排序 | 中等 |
0239. 滑动窗口最大值 | 题解 | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 |
0295. 数据流的中位数 | 题解 | 设计、双指针、数据流、排序、堆(优先队列) | 困难 |
0023. 合并 K 个升序链表 | 题解 | 链表、分治、堆(优先队列)、归并排序 | 困难 |
0218. 天际线问题 | 题解 | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 |
哈希表题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0705. 设计哈希集合 | 题解 | 设计、数组、哈希表、链表、哈希函数 | 简单 |
0706. 设计哈希映射 | 题解 | 设计、数组、哈希表、链表、哈希函数 | 简单 |
0217. 存在重复元素 | 题解 | 数组、哈希表、排序 | 简单 |
0219. 存在重复元素 II | 题解 | 数组、哈希表、滑动窗口 | 简单 |
0220. 存在重复元素 III | 题解 | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 |
1941. 检查是否所有字符出现次数相同 | 题解 | 哈希表、字符串、计数 | 简单 |
0136. 只出现一次的数字 | 题解 | 位运算、数组 | 简单 |
0383. 赎金信 | 题解 | 哈希表、字符串、计数 | 简单 |
0349. 两个数组的交集 | 题解 | 数组、哈希表、双指针、二分查找、排序 | 简单 |
0350. 两个数组的交集 II | 题解 | 数组、哈希表、双指针、二分查找、排序 | 简单 |
0036. 有效的数独 | 题解 | 数组、哈希表、矩阵 | 中等 |
0001. 两数之和 | 题解 | 数组、哈希表 | 简单 |
0015. 三数之和 | 题解 | 数组、双指针、排序 | 中等 |
0018. 四数之和 | 题解 | 数组、双指针、排序 | 中等 |
0454. 四数相加 II | 题解 | 数组、哈希表 | 中等 |
0041. 缺失的第一个正数 | 题解 | 数组、哈希表 | 困难 |
0128. 最长连续序列 | 题解 | 并查集、数组、哈希表 | 中等 |
0202. 快乐数 | 题解 | 哈希表、数学、双指针 | 简单 |
0242. 有效的字母异位词 | 题解 | 哈希表、字符串、排序 | 简单 |
0205. 同构字符串 | 题解 | 哈希表、字符串 | 简单 |
0442. 数组中重复的数据 | 题解 | 数组、哈希表 | 中等 |
LCR 186. 文物朝代判断 | 题解 | 数组、排序 | 简单 |
0268. 丢失的数字 | 题解 | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 |
LCR 120. 寻找文件副本 | 题解 | 数组、哈希表、排序 | 简单 |
0451. 根据字符出现频率排序 | 题解 | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 |
0049. 字母异位词分组 | 题解 | 数组、哈希表、字符串、排序 | 中等 |
0599. 两个列表的最小索引总和 | 题解 | 数组、哈希表、字符串 | 简单 |
0387. 字符串中的第一个唯一字符 | 题解 | 队列、哈希表、字符串、计数 | 简单 |
0447. 回旋镖的数量 | 题解 | 数组、哈希表、数学 | 中等 |
0149. 直线上最多的点数 | 题解 | 几何、数组、哈希表、数学 | 困难 |
0359. 日志速率限制器 | 题解 | 设计、哈希表、数据流 | 简单 |
0811. 子域名访问计数 | 题解 | 数组、哈希表、字符串、计数 | 中等 |
第 4 章 字符串
字符串基础题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0125. 验证回文串 | 题解 | 双指针、字符串 | 简单 |
0005. 最长回文子串 | 题解 | 双指针、字符串、动态规划 | 中等 |
0003. 无重复字符的最长子串 | 题解 | 哈希表、字符串、滑动窗口 | 中等 |
0344. 反转字符串 | 题解 | 双指针、字符串 | 简单 |
0557. 反转字符串中的单词 III | 题解 | 双指针、字符串 | 简单 |
0049. 字母异位词分组 | 题解 | 数组、哈希表、字符串、排序 | 中等 |
0415. 字符串相加 | 题解 | 数学、字符串、模拟 | 简单 |
0151. 反转字符串中的单词 | 题解 | 双指针、字符串 | 中等 |
0043. 字符串相乘 | 题解 | 数学、字符串、模拟 | 中等 |
0014. 最长公共前缀 | 题解 | 字典树、字符串 | 简单 |
单模式串匹配题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0028. 找出字符串中第一个匹配项的下标 | 题解 | 双指针、字符串、字符串匹配 | 简单 |
0459. 重复的子字符串 | 题解 | 字符串、字符串匹配 | 简单 |
0686. 重复叠加字符串匹配 | 题解 | 字符串、字符串匹配 | 中等 |
1668. 最大重复子字符串 | 题解 | 字符串、动态规划、字符串匹配 | 简单 |
0796. 旋转字符串 | 题解 | 字符串、字符串匹配 | 简单 |
1408. 数组中的字符串匹配 | 题解 | 数组、字符串、字符串匹配 | 简单 |
2156. 查找给定哈希值的子串 | 题解 | 字符串、滑动窗口、哈希函数、滚动哈希 | 困难 |
字典树题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0208. 实现 Trie (前缀树) | 题解 | 设计、字典树、哈希表、字符串 | 中等 |
0677. 键值映射 | 题解 | 设计、字典树、哈希表、字符串 | 中等 |
0648. 单词替换 | 题解 | 字典树、数组、哈希表、字符串 | 中等 |
0642. 设计搜索自动补全系统 | 题解 | 深度优先搜索、设计、字典树、字符串、数据流、排序、堆(优先队列) | 困难 |
0211. 添加与搜索单词 - 数据结构设计 | 题解 | 深度优先搜索、设计、字典树、字符串 | 中等 |
0421. 数组中两个数的最大异或值 | 题解 | 位运算、字典树、数组、哈希表 | 中等 |
0212. 单词搜索 II | 题解 | 字典树、数组、字符串、回溯、矩阵 | 困难 |
0425. 单词方块 | 题解 | 字典树、数组、字符串、回溯 | 困难 |
0336. 回文对 | 题解 | 字典树、数组、哈希表、字符串 | 困难 |
1023. 驼峰式匹配 | 题解 | 字典树、数组、双指针、字符串、字符串匹配 | 中等 |
0676. 实现一个魔法字典 | 题解 | 深度优先搜索、设计、字典树、哈希表、字符串 | 中等 |
0440. 字典序的第K小数字 | 题解 | 字典树 | 困难 |
第 5 章 树
二叉树的遍历题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0144. 二叉树的前序遍历 | 题解 | 栈、树、深度优先搜索、二叉树 | 简单 |
0094. 二叉树的中序遍历 | 题解 | 栈、树、深度优先搜索、二叉树 | 简单 |
0145. 二叉树的后序遍历 | 题解 | 栈、树、深度优先搜索、二叉树 | 简单 |
0102. 二叉树的层序遍历 | 题解 | 树、广度优先搜索、二叉树 | 中等 |
0103. 二叉树的锯齿形层序遍历 | 题解 | 树、广度优先搜索、二叉树 | 中等 |
0107. 二叉树的层序遍历 II | 题解 | 树、广度优先搜索、二叉树 | 中等 |
0104. 二叉树的最大深度 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
0111. 二叉树的最小深度 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
0124. 二叉树中的最大路径和 | 题解 | 树、深度优先搜索、动态规划、二叉树 | 困难 |
0101. 对称二叉树 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
0112. 路径总和 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
0113. 路径总和 II | 题解 | 树、深度优先搜索、回溯、二叉树 | 中等 |
0236. 二叉树的最近公共祖先 | 题解 | 树、深度优先搜索、二叉树 | 中等 |
0199. 二叉树的右视图 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 |
0226. 翻转二叉树 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
0958. 二叉树的完全性检验 | 题解 | 树、广度优先搜索、二叉树 | 中等 |
0572. 另一棵树的子树 | 题解 | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 |
0100. 相同的树 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
0116. 填充每个节点的下一个右侧节点指针 | 题解 | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 |
0117. 填充每个节点的下一个右侧节点指针 II | 题解 | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 |
0297. 二叉树的序列化与反序列化 | 题解 | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 |
0114. 二叉树展开为链表 | 题解 | 栈、树、深度优先搜索、链表、二叉树 | 中等 |
二叉树的还原题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0105. 从前序与中序遍历序列构造二叉树 | 题解 | 树、数组、哈希表、分治、二叉树 | 中等 |
0106. 从中序与后序遍历序列构造二叉树 | 题解 | 树、数组、哈希表、分治、二叉树 | 中等 |
0889. 根据前序和后序遍历构造二叉树 | 题解 | 树、数组、哈希表、分治、二叉树 | 中等 |
二叉搜索树题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0098. 验证二叉搜索树 | 题解 | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 |
0173. 二叉搜索树迭代器 | 题解 | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 |
0700. 二叉搜索树中的搜索 | 题解 | 树、二叉搜索树、二叉树 | 简单 |
0701. 二叉搜索树中的插入操作 | 题解 | 树、二叉搜索树、二叉树 | 中等 |
0450. 删除二叉搜索树中的节点 | 题解 | 树、二叉搜索树、二叉树 | 中等 |
0703. 数据流中的第 K 大元素 | 题解 | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 |
LCR 174. 寻找二叉搜索树中的目标节点 | 题解 | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 |
0230. 二叉搜索树中第 K 小的元素 | 题解 | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 |
0235. 二叉搜索树的最近公共祖先 | 题解 | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 |
0426. 将二叉搜索树转化为排序的双向链表 | 题解 | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 |
0108. 将有序数组转换为二叉搜索树 | 题解 | 树、二叉搜索树、数组、分治、二叉树 | 简单 |
0110. 平衡二叉树 | 题解 | 树、深度优先搜索、二叉树 | 简单 |
线段树题目
单点更新题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0303. 区域和检索 - 数组不可变 | 题解 | 设计、数组、前缀和 | 简单 |
0307. 区域和检索 - 数组可修改 | 题解 | 设计、树状数组、线段树、数组 | 中等 |
0354. 俄罗斯套娃信封问题 | 题解 | 数组、二分查找、动态规划、排序 | 困难 |
区间更新题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0370. 区间加法 | 题解 | 数组、前缀和 | 中等 |
1109. 航班预订统计 | 题解 | 数组、前缀和 | 中等 |
1450. 在既定时间做作业的学生人数 | 题解 | 数组 | 简单 |
0673. 最长递增子序列的个数 | 题解 | 树状数组、线段树、数组、动态规划 | 中等 |
1310. 子数组异或查询 | 题解 | 位运算、数组、前缀和 | 中等 |
1851. 包含每个查询的最小区间 | 题解 | 数组、二分查找、排序、扫描线、堆(优先队列) | 困难 |
区间合并题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0729. 我的日程安排表 I | 题解 | 设计、线段树、数组、二分查找、有序集合 | 中等 |
0731. 我的日程安排表 II | 题解 | 设计、线段树、数组、二分查找、有序集合、前缀和 | 中等 |
0732. 我的日程安排表 III | 题解 | 设计、线段树、二分查找、有序集合、前缀和 | 困难 |
扫描线问题
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0218. 天际线问题 | 题解 | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 |
0391. 完美矩形 | 题解 | 数组、扫描线 | 困难 |
0850. 矩形面积 II | 题解 | 线段树、数组、有序集合、扫描线 | 困难 |
树状数组题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0303. 区域和检索 - 数组不可变 | 题解 | 设计、数组、前缀和 | 简单 |
0307. 区域和检索 - 数组可修改 | 题解 | 设计、树状数组、线段树、数组 | 中等 |
0315. 计算右侧小于当前元素的个数 | 题解 | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 |
1450. 在既定时间做作业的学生人数 | 题解 | 数组 | 简单 |
0354. 俄罗斯套娃信封问题 | 题解 | 数组、二分查找、动态规划、排序 | 困难 |
0673. 最长递增子序列的个数 | 题解 | 树状数组、线段树、数组、动态规划 | 中等 |
1310. 子数组异或查询 | 题解 | 位运算、数组、前缀和 | 中等 |
1893. 检查是否区域内所有整数都被覆盖 | 题解 | 数组、哈希表、前缀和 | 简单 |
并查集题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0990. 等式方程的可满足性 | 题解 | 并查集、图、数组、字符串 | 中等 |
0547. 省份数量 | 题解 | 深度优先搜索、广度优先搜索、并查集、图 | 中等 |
0684. 冗余连接 | 题解 | 深度优先搜索、广度优先搜索、并查集、图 | 中等 |
1319. 连通网络的操作次数 | 题解 | 深度优先搜索、广度优先搜索、并查集、图 | 中等 |
0765. 情侣牵手 | 题解 | 贪心、深度优先搜索、广度优先搜索、并查集、图 | 困难 |
0399. 除法求值 | 题解 | 深度优先搜索、广度优先搜索、并查集、图、数组、字符串、最短路 | 中等 |
0959. 由斜杠划分区域 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、矩阵 | 中等 |
1631. 最小体力消耗路径 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 |
0778. 水位上升的泳池中游泳 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 |
1202. 交换字符串中的元素 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、字符串、排序 | 中等 |
0947. 移除最多的同行或同列石头 | 题解 | 深度优先搜索、并查集、图、哈希表 | 中等 |
0803. 打砖块 | 题解 | 并查集、数组、矩阵 | 困难 |
0128. 最长连续序列 | 题解 | 并查集、数组、哈希表 | 中等 |
第 6 章 图论
图的深度优先搜索题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0797. 所有可能的路径 | 题解 | 深度优先搜索、广度优先搜索、图、回溯 | 中等 |
0200. 岛屿数量 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 |
0695. 岛屿的最大面积 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 |
0133. 克隆图 | 题解 | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 |
0494. 目标和 | 题解 | 数组、动态规划、回溯 | 中等 |
0144. 二叉树的前序遍历 | 题解 | 栈、树、深度优先搜索、二叉树 | 简单 |
0094. 二叉树的中序遍历 | 题解 | 栈、树、深度优先搜索、二叉树 | 简单 |
0145. 二叉树的后序遍历 | 题解 | 栈、树、深度优先搜索、二叉树 | 简单 |
0589. N 叉树的前序遍历 | 题解 | 栈、树、深度优先搜索 | 简单 |
0590. N 叉树的后序遍历 | 题解 | 栈、树、深度优先搜索 | 简单 |
0124. 二叉树中的最大路径和 | 题解 | 树、深度优先搜索、动态规划、二叉树 | 困难 |
0199. 二叉树的右视图 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 |
0543. 二叉树的直径 | 题解 | 树、深度优先搜索、二叉树 | 简单 |
0662. 二叉树最大宽度 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 |
0958. 二叉树的完全性检验 | 题解 | 树、广度优先搜索、二叉树 | 中等 |
0572. 另一棵树的子树 | 题解 | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 |
0100. 相同的树 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
0111. 二叉树的最小深度 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
0841. 钥匙和房间 | 题解 | 深度优先搜索、广度优先搜索、图 | 中等 |
0129. 求根节点到叶节点数字之和 | 题解 | 树、深度优先搜索、二叉树 | 中等 |
0323. 无向图中连通分量的数目 | 题解 | 深度优先搜索、广度优先搜索、并查集、图 | 中等 |
0684. 冗余连接 | 题解 | 深度优先搜索、广度优先搜索、并查集、图 | 中等 |
0802. 找到最终的安全状态 | 题解 | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 |
0785. 判断二分图 | 题解 | 深度优先搜索、广度优先搜索、并查集、图 | 中等 |
0886. 可能的二分法 | 题解 | 深度优先搜索、广度优先搜索、并查集、图 | 中等 |
0323. 无向图中连通分量的数目 | 题解 | 深度优先搜索、广度优先搜索、并查集、图 | 中等 |
0130. 被围绕的区域 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 |
0417. 太平洋大西洋水流问题 | 题解 | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 |
1020. 飞地的数量 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 |
1254. 统计封闭岛屿的数目 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 |
1034. 边界着色 | 题解 | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 |
LCR 130. 衣橱整理 | 题解 | 深度优先搜索、广度优先搜索、动态规划 | 中等 |
0529. 扫雷游戏 | 题解 | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 |
图的广度优先搜索题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0797. 所有可能的路径 | 题解 | 深度优先搜索、广度优先搜索、图、回溯 | 中等 |
0286. 墙与门 | 题解 | 广度优先搜索、数组、矩阵 | 中等 |
0200. 岛屿数量 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 |
0752. 打开转盘锁 | 题解 | 广度优先搜索、数组、哈希表、字符串 | 中等 |
0279. 完全平方数 | 题解 | 广度优先搜索、数学、动态规划 | 中等 |
0133. 克隆图 | 题解 | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 |
0733. 图像渲染 | 题解 | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 |
0542. 01 矩阵 | 题解 | 广度优先搜索、数组、动态规划、矩阵 | 中等 |
0322. 零钱兑换 | 题解 | 广度优先搜索、数组、动态规划 | 中等 |
0323. 无向图中连通分量的数目 | 题解 | 深度优先搜索、广度优先搜索、并查集、图 | 中等 |
LCR 130. 衣橱整理 | 题解 | 深度优先搜索、广度优先搜索、动态规划 | 中等 |
0199. 二叉树的右视图 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 |
0662. 二叉树最大宽度 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 |
0958. 二叉树的完全性检验 | 题解 | 树、广度优先搜索、二叉树 | 中等 |
0572. 另一棵树的子树 | 题解 | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 |
0100. 相同的树 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
0111. 二叉树的最小深度 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
LCR 151. 彩灯装饰记录 III | 题解 | 树、广度优先搜索、二叉树 | 中等 |
图的拓扑排序题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0207. 课程表 | 题解 | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 |
0210. 课程表 II | 题解 | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 |
1136. 并行课程 | 题解 | 图、拓扑排序 | 中等 |
2050. 并行课程 III | 题解 | 图、拓扑排序、数组、动态规划 | 困难 |
0802. 找到最终的安全状态 | 题解 | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 |
0851. 喧闹和富有 | 题解 | 深度优先搜索、图、拓扑排序、数组 | 中等 |
图的最小生成树题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
1584. 连接所有点的最小费用 | 题解 | 并查集、图、数组、最小生成树 | 中等 |
1631. 最小体力消耗路径 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 |
0778. 水位上升的泳池中游泳 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 |
单源最短路径题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0407. 接雨水 II | 题解 | 广度优先搜索、数组、矩阵、堆(优先队列) | 困难 |
0743. 网络延迟时间 | 题解 | 深度优先搜索、广度优先搜索、图、最短路、堆(优先队列) | 中等 |
0787. K 站中转内最便宜的航班 | 题解 | 深度优先搜索、广度优先搜索、图、动态规划、最短路、堆(优先队列) | 中等 |
1631. 最小体力消耗路径 | 题解 | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 |
1786. 从第一个节点出发到最后一个节点的受限路径数 | 题解 | 图、拓扑排序、动态规划、最短路、堆(优先队列) | 中等 |
多源最短路径题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0815. 公交路线 | 题解 | 广度优先搜索、数组、哈希表 | 困难 |
1162. 地图分析 | 题解 | 广度优先搜索、数组、动态规划、矩阵 | 中等 |
次短路径题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
2045. 到达目的地的第二短时间 | 题解 | 广度优先搜索、图、最短路 | 困难 |
差分约束系统
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0995. K 连续位的最小翻转次数 | 题解 | 位运算、队列、数组、前缀和、滑动窗口 | 困难 |
1109. 航班预订统计 | 题解 | 数组、前缀和 | 中等 |
二分图基础题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0785. 判断二分图 | 题解 | 深度优先搜索、广度优先搜索、并查集、图 | 中等 |
二分图最大匹配题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
LCP 04. 覆盖 | 题解 | 位运算、图、数组、动态规划、状态压缩 | 困难 |
1947. 最大兼容性评分和 | 题解 | 位运算、数组、动态规划、回溯、状态压缩 | 中等 |
1595. 连通两组点的最小成本 | 题解 | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 |
第 7 章 基础算法
枚举算法题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0001. 两数之和 | 题解 | 数组、哈希表 | 简单 |
0204. 计数质数 | 题解 | 数组、数学、枚举、数论 | 中等 |
1925. 统计平方和三元组的数目 | 题解 | 数学、枚举 | 简单 |
1450. 在既定时间做作业的学生人数 | 题解 | 数组 | 简单 |
1620. 网络信号最好的坐标 | 题解 | 数组、枚举 | 中等 |
LCR 180. 文件组合 | 题解 | 数学、双指针、枚举 | 简单 |
0800. 相似 RGB 颜色 | 题解 | 数学、字符串、枚举 | 简单 |
0221. 最大正方形 | 题解 | 数组、动态规划、矩阵 | 中等 |
0560. 和为 K 的子数组 | 题解 | 数组、哈希表、前缀和 | 中等 |
递归算法题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0344. 反转字符串 | 题解 | 双指针、字符串 | 简单 |
0024. 两两交换链表中的节点 | 题解 | 递归、链表 | 中等 |
0118. 杨辉三角 | 题解 | 数组、动态规划 | 简单 |
0119. 杨辉三角 II | 题解 | 数组、动态规划 | 简单 |
0206. 反转链表 | 题解 | 递归、链表 | 简单 |
0092. 反转链表 II | 题解 | 链表 | 中等 |
0021. 合并两个有序链表 | 题解 | 递归、链表 | 简单 |
0509. 斐波那契数 | 题解 | 递归、记忆化搜索、数学、动态规划 | 简单 |
0070. 爬楼梯 | 题解 | 记忆化搜索、数学、动态规划 | 简单 |
0104. 二叉树的最大深度 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
0124. 二叉树中的最大路径和 | 题解 | 树、深度优先搜索、动态规划、二叉树 | 困难 |
0226. 翻转二叉树 | 题解 | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 |
0050. Pow(x, n) | 题解 | 递归、数学 | 中等 |
0779. 第K个语法符号 | 题解 | 位运算、递归、数学 | 中等 |
0095. 不同的二叉搜索树 II | 题解 | 树、二叉搜索树、动态规划、回溯、二叉树 | 中等 |
LCR 187. 破冰游戏 | 题解 | 递归、数学 | 简单 |
分治算法题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0004. 寻找两个正序数组的中位数 | 题解 | 数组、二分查找、分治 | 困难 |
0023. 合并 K 个升序链表 | 题解 | 链表、分治、堆(优先队列)、归并排序 | 困难 |
0053. 最大子数组和 | 题解 | 数组、分治、动态规划 | 中等 |
0241. 为运算表达式设计优先级 | 题解 | 递归、记忆化搜索、数学、字符串、动态规划 | 中等 |
0169. 多数元素 | 题解 | 数组、哈希表、分治、计数、排序 | 简单 |
0050. Pow(x, n) | 题解 | 递归、数学 | 中等 |
0014. 最长公共前缀 | 题解 | 字典树、字符串 | 简单 |
LCR 152. 验证二叉搜索树的后序遍历序列 | 题解 | 栈、树、二叉搜索树、递归、数组、二叉树、单调栈 | 中等 |
回溯算法题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0046. 全排列 | 题解 | 数组、回溯 | 中等 |
0047. 全排列 II | 题解 | 数组、回溯、排序 | 中等 |
0037. 解数独 | 题解 | 数组、哈希表、回溯、矩阵 | 困难 |
0022. 括号生成 | 题解 | 字符串、动态规划、回溯 | 中等 |
0017. 电话号码的字母组合 | 题解 | 哈希表、字符串、回溯 | 中等 |
0784. 字母大小写全排列 | 题解 | 位运算、字符串、回溯 | 中等 |
0039. 组合总和 | 题解 | 数组、回溯 | 中等 |
0040. 组合总和 II | 题解 | 数组、回溯 | 中等 |
0078. 子集 | 题解 | 位运算、数组、回溯 | 中等 |
0090. 子集 II | 题解 | 位运算、数组、回溯 | 中等 |
0473. 火柴拼正方形 | 题解 | 位运算、数组、动态规划、回溯、状态压缩 | 中等 |
1593. 拆分字符串使唯一子字符串的数目最大 | 题解 | 哈希表、字符串、回溯 | 中等 |
1079. 活字印刷 | 题解 | 哈希表、字符串、回溯、计数 | 中等 |
0093. 复原 IP 地址 | 题解 | 字符串、回溯 | 中等 |
0079. 单词搜索 | 题解 | 深度优先搜索、数组、字符串、回溯、矩阵 | 中等 |
0679. 24 点游戏 | 题解 | 数组、数学、回溯 | 困难 |
贪心算法题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0455. 分发饼干 | 题解 | 贪心、数组、双指针、排序 | 简单 |
0860. 柠檬水找零 | 题解 | 贪心、数组 | 简单 |
0056. 合并区间 | 题解 | 数组、排序 | 中等 |
0435. 无重叠区间 | 题解 | 贪心、数组、动态规划、排序 | 中等 |
0452. 用最少数量的箭引爆气球 | 题解 | 贪心、数组、排序 | 中等 |
0055. 跳跃游戏 | 题解 | 贪心、数组、动态规划 | 中等 |
0045. 跳跃游戏 II | 题解 | 贪心、数组、动态规划 | 中等 |
0122. 买卖股票的最佳时机 II | 题解 | 贪心、数组、动态规划 | 中等 |
0561. 数组拆分 | 题解 | 贪心、数组、计数排序、排序 | 简单 |
1710. 卡车上的最大单元数 | 题解 | 贪心、数组、排序 | 简单 |
1217. 玩筹码 | 题解 | 贪心、数组、数学 | 简单 |
1247. 交换字符使得字符串相同 | 题解 | 贪心、数学、字符串 | 中等 |
1400. 构造 K 个回文字符串 | 题解 | 贪心、哈希表、字符串、计数 | 中等 |
0921. 使括号有效的最少添加 | 题解 | 栈、贪心、字符串 | 中等 |
1029. 两地调度 | 题解 | 贪心、数组、排序 | 中等 |
1605. 给定行和列的和求可行矩阵 | 题解 | 贪心、数组、矩阵 | 中等 |
0135. 分发糖果 | 题解 | 贪心、数组 | 困难 |
0134. 加油站 | 题解 | 贪心、数组 | 中等 |
0053. 最大子数组和 | 题解 | 数组、分治、动态规划 | 中等 |
0376. 摆动序列 | 题解 | 贪心、数组、动态规划 | 中等 |
0738. 单调递增的数字 | 题解 | 贪心、数学 | 中等 |
0402. 移掉 K 位数字 | 题解 | 栈、贪心、字符串、单调栈 | 中等 |
0861. 翻转矩阵后的得分 | 题解 | 贪心、位运算、数组、矩阵 | 中等 |
0670. 最大交换 | 题解 | 贪心、数学 | 中等 |
位运算题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0504. 七进制数 | 题解 | 数学 | 简单 |
0405. 数字转换为十六进制数 | 题解 | 位运算、数学 | 简单 |
0190. 颠倒二进制位 | 题解 | 位运算、分治 | 简单 |
1009. 十进制整数的反码 | 题解 | 位运算 | 简单 |
0191. 位1的个数 | 题解 | 位运算、分治 | 简单 |
0371. 两整数之和 | 题解 | 位运算、数学 | 中等 |
0089. 格雷编码 | 题解 | 位运算、数学、回溯 | 中等 |
0201. 数字范围按位与 | 题解 | 位运算 | 中等 |
0338. 比特位计数 | 题解 | 位运算、动态规划 | 简单 |
0136. 只出现一次的数字 | 题解 | 位运算、数组 | 简单 |
0137. 只出现一次的数字 II | 题解 | 位运算、数组 | 中等 |
0260. 只出现一次的数字 III | 题解 | 位运算、数组 | 中等 |
0268. 丢失的数字 | 题解 | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 |
1349. 参加考试的最大学生数 | 题解 | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 |
0645. 错误的集合 | 题解 | 位运算、数组、哈希表、排序 | 简单 |
0078. 子集 | 题解 | 位运算、数组、回溯 | 中等 |
0090. 子集 II | 题解 | 位运算、数组、回溯 | 中等 |
第 8 章 动态规划
动态规划基础题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0509. 斐波那契数 | 题解 | 递归、记忆化搜索、数学、动态规划 | 简单 |
0070. 爬楼梯 | 题解 | 记忆化搜索、数学、动态规划 | 简单 |
0062. 不同路径 | 题解 | 数学、动态规划、组合数学 | 中等 |
记忆化搜索题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
1137. 第 N 个泰波那契数 | 题解 | 记忆化搜索、数学、动态规划 | 简单 |
0375. 猜数字大小 II | 题解 | 数学、动态规划、博弈 | 中等 |
0494. 目标和 | 题解 | 数组、动态规划、回溯 | 中等 |
0576. 出界的路径数 | 题解 | 动态规划 | 中等 |
0087. 扰乱字符串 | 题解 | 字符串、动态规划 | 困难 |
0403. 青蛙过河 | 题解 | 数组、动态规划 | 困难 |
0552. 学生出勤记录 II | 题解 | 动态规划 | 困难 |
0913. 猫和老鼠 | 题解 | 图、拓扑排序、记忆化搜索、数学、动态规划、博弈 | 困难 |
0329. 矩阵中的最长递增路径 | 题解 | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 |
线性 DP 题目
单串线性 DP 问题
双串线性 DP 问题
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
1143. 最长公共子序列 | 题解 | 字符串、动态规划 | 中等 |
0712. 两个字符串的最小ASCII删除和 | 题解 | 字符串、动态规划 | 中等 |
0718. 最长重复子数组 | 题解 | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 |
0583. 两个字符串的删除操作 | 题解 | 字符串、动态规划 | 中等 |
0072. 编辑距离 | 题解 | 字符串、动态规划 | 中等 |
0044. 通配符匹配 | 题解 | 贪心、递归、字符串、动态规划 | 困难 |
0010. 正则表达式匹配 | 题解 | 递归、字符串、动态规划 | 困难 |
0097. 交错字符串 | 题解 | 字符串、动态规划 | 中等 |
0115. 不同的子序列 | 题解 | 字符串、动态规划 | 困难 |
0087. 扰乱字符串 | 题解 | 字符串、动态规划 | 困难 |
矩阵线性 DP 问题
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0118. 杨辉三角 | 题解 | 数组、动态规划 | 简单 |
0119. 杨辉三角 II | 题解 | 数组、动态规划 | 简单 |
0120. 三角形最小路径和 | 题解 | 数组、动态规划 | 中等 |
0064. 最小路径和 | 题解 | 数组、动态规划、矩阵 | 中等 |
0174. 地下城游戏 | 题解 | 数组、动态规划、矩阵 | 困难 |
0221. 最大正方形 | 题解 | 数组、动态规划、矩阵 | 中等 |
0931. 下降路径最小和 | 题解 | 数组、动态规划、矩阵 | 中等 |
0576. 出界的路径数 | 题解 | 动态规划 | 中等 |
0085. 最大矩形 | 题解 | 栈、数组、动态规划、矩阵、单调栈 | 困难 |
0363. 矩形区域不超过 K 的最大数值和 | 题解 | 数组、二分查找、矩阵、有序集合、前缀和 | 困难 |
面试题 17.24. 最大子矩阵 | 题解 | 数组、动态规划、矩阵、前缀和 | 困难 |
1444. 切披萨的方案数 | 题解 | 记忆化搜索、数组、动态规划、矩阵、前缀和 | 困难 |
无串线性 DP 问题
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
1137. 第 N 个泰波那契数 | 题解 | 记忆化搜索、数学、动态规划 | 简单 |
0650. 两个键的键盘 | 题解 | 数学、动态规划 | 中等 |
0264. 丑数 II | 题解 | 哈希表、数学、动态规划、堆(优先队列) | 中等 |
0279. 完全平方数 | 题解 | 广度优先搜索、数学、动态规划 | 中等 |
0343. 整数拆分 | 题解 | 数学、动态规划 | 中等 |
背包问题题目
0-1 背包问题
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0416. 分割等和子集 | 题解 | 数组、动态规划 | 中等 |
0494. 目标和 | 题解 | 数组、动态规划、回溯 | 中等 |
1049. 最后一块石头的重量 II | 题解 | 数组、动态规划 | 中等 |
完全背包问题
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0279. 完全平方数 | 题解 | 广度优先搜索、数学、动态规划 | 中等 |
0322. 零钱兑换 | 题解 | 广度优先搜索、数组、动态规划 | 中等 |
0518. 零钱兑换 II | 题解 | 数组、动态规划 | 中等 |
0139. 单词拆分 | 题解 | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 |
0377. 组合总和 Ⅳ | 题解 | 数组、动态规划 | 中等 |
0638. 大礼包 | 题解 | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 |
1449. 数位成本和为目标值的最大数字 | 题解 | 数组、动态规划 | 困难 |
多重背包问题
分组背包问题
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
1155. 掷骰子等于目标和的方法数 | 题解 | 动态规划 | 中等 |
2585. 获得分数的方法数 | 题解 | 数组、动态规划 | 困难 |
多维背包问题
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0474. 一和零 | 题解 | 数组、字符串、动态规划 | 中等 |
0879. 盈利计划 | 题解 | 数组、动态规划 | 困难 |
1995. 统计特殊四元组 | 题解 | 数组、哈希表、枚举 | 简单 |
区间 DP 题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0486. 预测赢家 | 题解 | 递归、数组、数学、动态规划、博弈 | 中等 |
0312. 戳气球 | 题解 | 数组、动态规划 | 困难 |
0877. 石子游戏 | 题解 | 数组、数学、动态规划、博弈 | 中等 |
1000. 合并石头的最低成本 | 题解 | 数组、动态规划、前缀和 | 困难 |
1547. 切棍子的最小成本 | 题解 | 数组、动态规划、排序 | 困难 |
0664. 奇怪的打印机 | 题解 | 字符串、动态规划 | 困难 |
1039. 多边形三角剖分的最低得分 | 题解 | 数组、动态规划 | 中等 |
0546. 移除盒子 | 题解 | 记忆化搜索、数组、动态规划 | 困难 |
0375. 猜数字大小 II | 题解 | 数学、动态规划、博弈 | 中等 |
0678. 有效的括号字符串 | 题解 | 栈、贪心、字符串、动态规划 | 中等 |
0005. 最长回文子串 | 题解 | 双指针、字符串、动态规划 | 中等 |
0516. 最长回文子序列 | 题解 | 字符串、动态规划 | 中等 |
0730. 统计不同回文子序列 | 题解 | 字符串、动态规划 | 困难 |
2104. 子数组范围和 | 题解 | 栈、数组、单调栈 | 中等 |
树形 DP 题目
固定根的树形 DP 题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0543. 二叉树的直径 | 题解 | 树、深度优先搜索、二叉树 | 简单 |
0124. 二叉树中的最大路径和 | 题解 | 树、深度优先搜索、动态规划、二叉树 | 困难 |
1245. 树的直径 | 题解 | 树、深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 |
2246. 相邻字符不同的最长路径 | 题解 | 树、深度优先搜索、图、拓扑排序、数组、字符串 | 困难 |
0687. 最长同值路径 | 题解 | 树、深度优先搜索、二叉树 | 中等 |
0337. 打家劫舍 III | 题解 | 树、深度优先搜索、动态规划、二叉树 | 中等 |
0333. 最大二叉搜索子树 | 题解 | 树、深度优先搜索、二叉搜索树、动态规划、二叉树 | 中等 |
1617. 统计子树中城市之间最大距离 | 题解 | 位运算、树、动态规划、状态压缩、枚举 | 困难 |
2538. 最大价值和与最小价值和的差值 | 题解 | 树、深度优先搜索、数组、动态规划 | 困难 |
1569. 将子数组重新排序得到同一个二叉搜索树的方案数 | 题解 | 树、并查集、二叉搜索树、记忆化搜索、数组、数学、分治、动态规划、二叉树、组合数学 | 困难 |
1372. 二叉树中的最长交错路径 | 题解 | 树、深度优先搜索、动态规划、二叉树 | 中等 |
1373. 二叉搜索子树的最大键值和 | 题解 | 树、深度优先搜索、二叉搜索树、动态规划、二叉树 | 困难 |
0968. 监控二叉树 | 题解 | 树、深度优先搜索、动态规划、二叉树 | 困难 |
1273. 删除树节点 | 题解 | 树、深度优先搜索、广度优先搜索、数组 | 中等 |
1519. 子树中标签相同的节点数 | 题解 | 树、深度优先搜索、广度优先搜索、哈希表、计数 | 中等 |
不定根的树形 DP 题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0310. 最小高度树 | 题解 | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 |
0834. 树中距离之和 | 题解 | 树、深度优先搜索、图、动态规划 | 困难 |
2581. 统计可能的树根数目 | 题解 | 树、深度优先搜索、数组、哈希表、动态规划 | 困难 |
状态压缩 DP 题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
1879. 两个数组最小的异或值之和 | 题解 | 位运算、数组、动态规划、状态压缩 | 困难 |
2172. 数组的最大与和 | 题解 | 位运算、数组、动态规划、状态压缩 | 困难 |
1947. 最大兼容性评分和 | 题解 | 位运算、数组、动态规划、回溯、状态压缩 | 中等 |
1595. 连通两组点的最小成本 | 题解 | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 |
1494. 并行课程 II | 题解 | 位运算、图、动态规划、状态压缩 | 困难 |
1655. 分配重复整数 | 题解 | 位运算、数组、动态规划、回溯、状态压缩 | 困难 |
1986. 完成任务的最少工作时间段 | 题解 | 位运算、数组、动态规划、回溯、状态压缩 | 中等 |
1434. 每个人戴不同帽子的方案数 | 题解 | 位运算、数组、动态规划、状态压缩 | 困难 |
1799. N 次操作后的最大分数和 | 题解 | 位运算、数组、数学、动态规划、回溯、状态压缩、数论 | 困难 |
1681. 最小不兼容性 | 题解 | 位运算、数组、动态规划、状态压缩 | 困难 |
0526. 优美的排列 | 题解 | 位运算、数组、动态规划、回溯、状态压缩 | 中等 |
0351. 安卓系统手势解锁 | 题解 | 位运算、动态规划、回溯、状态压缩 | 中等 |
0464. 我能赢吗 | 题解 | 位运算、记忆化搜索、数学、动态规划、状态压缩、博弈 | 中等 |
0847. 访问所有节点的最短路径 | 题解 | 位运算、广度优先搜索、图、动态规划、状态压缩 | 困难 |
0638. 大礼包 | 题解 | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 |
1994. 好子集的数目 | 题解 | 位运算、数组、数学、动态规划、状态压缩 | 困难 |
1349. 参加考试的最大学生数 | 题解 | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 |
0698. 划分为k个相等的子集 | 题解 | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 |
0943. 最短超级串 | 题解 | 位运算、数组、字符串、动态规划、状态压缩 | 困难 |
0691. 贴纸拼词 | 题解 | 位运算、记忆化搜索、数组、哈希表、字符串、动态规划、回溯、状态压缩 | 困难 |
0982. 按位与为零的三元组 | 题解 | 位运算、数组、哈希表 | 困难 |
计数 DP 题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0062. 不同路径 | 题解 | 数学、动态规划、组合数学 | 中等 |
0063. 不同路径 II | 题解 | 数组、动态规划、矩阵 | 中等 |
0343. 整数拆分 | 题解 | 数学、动态规划 | 中等 |
0096. 不同的二叉搜索树 | 题解 | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 |
1259. 不相交的握手 | 题解 | 数学、动态规划 | 困难 |
0790. 多米诺和托米诺平铺 | 题解 | 动态规划 | 中等 |
0070. 爬楼梯 | 题解 | 记忆化搜索、数学、动态规划 | 简单 |
0746. 使用最小花费爬楼梯 | 题解 | 数组、动态规划 | 简单 |
0509. 斐波那契数 | 题解 | 递归、记忆化搜索、数学、动态规划 | 简单 |
1137. 第 N 个泰波那契数 | 题解 | 记忆化搜索、数学、动态规划 | 简单 |
数位 DP 题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
2376. 统计特殊整数 | 题解 | 数学、动态规划 | 困难 |
0357. 统计各位数字都不同的数字个数 | 题解 | 数学、动态规划、回溯 | 中等 |
1012. 至少有 1 位重复的数字 | 题解 | 数学、动态规划 | 困难 |
0902. 最大为 N 的数字组合 | 题解 | 数组、数学、字符串、二分查找、动态规划 | 困难 |
0788. 旋转数字 | 题解 | 数学、动态规划 | 中等 |
0600. 不含连续1的非负整数 | 题解 | 动态规划 | 困难 |
0233. 数字 1 的个数 | 题解 | 递归、数学、动态规划 | 困难 |
2719. 统计整数数目 | 题解 | 数学、字符串、动态规划 | 困难 |
0248. 中心对称数 III | 题解 | 递归、数组、字符串 | 困难 |
1088. 易混淆数 II | 题解 | 数学、回溯 | 困难 |
1067. 范围内的数字计数 | 题解 | 数学、动态规划 | 困难 |
1742. 盒子中小球的最大数量 | 题解 | 哈希表、数学、计数 | 简单 |
面试题 17.06. 2出现的次数 | 题解 | 递归、数学、动态规划 | 困难 |
概率 DP 题目
标题 | 题解 | 标签 | 难度 |
---|---|---|---|
0688. 骑士在棋盘上的概率 | 题解 | 动态规划 | 中等 |
0808. 分汤 | 题解 | 数学、动态规划、概率与统计 | 中等 |
0837. 新 21 点 | 题解 | 数学、动态规划、滑动窗口、概率与统计 | 中等 |
1230. 抛掷硬币 | 题解 | 数组、数学、动态规划、概率与统计 | 中等 |
1467. 两个盒子中球的颜色数相同的概率 | 题解 | 数组、数学、动态规划、回溯、组合数学、概率与统计 | 困难 |
1227. 飞机座位分配概率 | 题解 | 脑筋急转弯、数学、动态规划、概率与统计 | 中等 |
1377. T 秒后青蛙的位置 | 题解 | 树、深度优先搜索、广度优先搜索、图 | 困难 |
LCR 185. 统计结果概率 | 题解 | 数学、动态规划、概率与统计 | 中等 |