| 题目 | 关键字 | |
|---|---|---|
| 387. 字符串中的第一个唯一字符 | 哈希表 | |
| 381. O(1) 时间插入、删除和获取随机元素 - 允许重复 | 哈希表、技巧、数据结构组合使用 | 重点题 |
| 42. 有效的字母异位词 | 哈希表、数组、排序 | |
| 454. 四数相加 II | 哈希表 | |
| 146. LRU缓存机制 | 哈希表、双向链表 | 重点题 |
| 290. 单词规律 | 哈希表、双向映射 | 重点题 |
| 205. 同构字符串 | 哈希表、双向映射 | |
| 1128. 等价多米诺骨牌对的数量 | Map/数组、计数 | |
| 888. 公平的糖果棒交换 | 哈希表 | |
| 447. 回旋镖的数量 | 哈希表 + 枚举 | |
| 226. 翻转二叉树 | 递归 | |
| 98. 验证二叉搜索树 | 先序遍历/递归/层次遍历 | |
| 124. 二叉树中的最大路径和 | 后序遍历/递归 | |
| 剑指 Offer 26. 树的子结构 | 递归、树的遍历、穷举 | 重点题 |
| 128. 最长连续序列 | 哈希表 + 枚举 | |
| 496. 下一个更大元素 | 哈希表 + 单调栈 | |
| 2013. 检测正方形 | 哈希表 | |
| 41. 缺失的第一个正数 | 原地哈希 |
| 题目 | 关键字 | |
|---|---|---|
| 129. 求根到叶子节点数字之和 | 先序遍历、递归 | |
| 1325. 删除给定值的叶子节点叉树的最近公共祖先](src/swordToOffer/lowestCommonAncestor) | 递归 | 重点题 |
| 230. 二叉搜索树中第K小的元素 | 中序遍历 | |
| 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 | 迭代、递归、二叉搜索树的特性、后序遍历 | |
| 103. 二叉树的锯齿形层序遍历 | DFS、BFS、队列 | 重点题 |
| 100. 相同的树 | 递归 | |
| 173. 二叉搜索树迭代器 | 中序遍历 | |
| 872. 叶子相似的树 | 递归 | |
| 437. 路径总和 III | dfs/前缀和 | |
| 337. 打家劫舍 | dfs | |
| 1245. 树的直径 | dfs |
| 题目 | 关键字 | |
|---|---|---|
| 1277. 统计全为 1 的正方形子矩阵 | 动态规划 | |
| 118. 杨辉三角 | 动态规划 | |
| 300. 最长上升子序列 | 动态规划、二分查找、贪心算法 | 重点题 |
| 1143. 最长公共子序列 | 动态规划 | 重点题 |
| 416. 分割等和子集 | 动态规划/0-1背包问题 | 重点题 |
| LCP 19. 秋叶收藏集 | 动态规划 | 重点题 |
| 514. 自由之路 | 动态规划、dfs | 重点题 |
| 零钱兑换 | 动态规划、dfs | 重点题 |
| 309. 最佳买卖股票时机含冷冻期 | 动态规划、bfs | 重点题 |
| 剑指 Offer 49. 丑数 | 动态规划 | 重点题 |
| 746. 使用最小花费爬楼梯 | 动态规划 | 重点题 |
| 198. 打家劫舍 | 动态规划 | |
| 13. 打家劫舍 II | 动态规划 | 重点题 |
| 354. 俄罗斯套娃信封问题 | 动态规划、二分查找 | 重点题 |
| 132. 分割回文串 II | 动态规划 | 重点题 |
| 1137. 第 N 个泰波那契数 | 动态规划 | |
| 516. 最长回文子序列 | 动态规划 | |
| 63. 不同路径 II | 动态规划、回溯 | |
| 583. 两个字符串的删除操作 | 动态规划 | |
| 639. 解码方法 II | 回溯 dfs 记忆/动态规划 | 重点题 |
| 1218. 最长定差子序列 | 动态规划 | 重点题 |
| 718. 最长重复子数组 | 动态规划 | |
| 221. 最大正方形 | 动态规划/前缀和、二分查找 | |
| 494. 目标和 | 动态规划 |
| 题目 | 关键字 | |
|---|---|---|
| 463. 岛屿的周长 | 模拟、暴力破解、BFS | |
| 57. 插入区间 | 模拟、分段求解 | 重点题 |
| 1370. 上升下降字符串 | 模拟、借助数组 | |
| 88. 合并两个有序数组 | 模拟、数组 | |
| 189. 旋转数组 | 模拟、向前冒泡 | |
| [1018. 可被 5 整除的二进制前缀](src/e veryday/prefixesDivBy5) | 模拟,暴力求解 | |
| 867. 转置矩阵 | 模拟 | |
| 482. 密钥格式化 | 模拟 | |
| 498. 对角线遍历 | 模拟 |
| 题目 | 关键字 |
|---|---|
| 202. 快乐数 | 快慢指针/哈希表/出现循环的判断 |
| 876. 链表的中间结点 | 快慢指针 |
| 题目 | 关键字 |
|---|---|
| 941. 有效的山脉数组 | 双指针/模拟 |
| 328. 奇偶链表 | 双指针、链表操作 |
| 283. 移动零 | 双指针 |
| 922. 按奇偶排序数组 II | 双指针 |
| 剑指 Offer 52. 两个链表的第一个公共节点 | 双指针、技巧 |
| 524. 通过删除字母匹配到字典里最长单词 | 双指针 |
| 392. 判断子序列 | 双指针/String的indexOf方法 |
| 435. 无重叠区间 | 双指针/按照末尾排序 |
| 86. 分隔链表 | 双指针 |
| 978. 最长湍流子数组 | 双指针/动态规划 |
| 832. 翻转图像 | 双指针 |
| 80. 删除有序数组中的重复项 II | 三指针 |
| 18. 四数之和 | 双指针 |
| 题目 | 关键字 | |
|---|---|---|
| 648. 单词替换 | 字典树/hash表 | 重点题 |
| 211. 添加与搜索单词 - 数据结构设计 | 字典树/hash表 | |
| 剑指 Offer II 065. 最短的单词编码 | 字典树 |
| 题目 | 关键字 | |
|---|---|---|
| 139. 单词拆分 | 回溯/动态规划 | 重点题 |
| 40. 组合总和 II | 回溯、剪枝 | 重点题 |
| 剑指 Offer 38. 字符串的排列 | 回溯、dfs、剪枝 | 重点题 |
| 131. 分割回文串 | 回溯、动态规划预处理、记忆 | |
| 90. 子集 II | 回溯 | |
| 17. 电话号码的字母组合 | 回溯 | |
| 282. 给表达式添加运算符 | 回溯 | 重点题 |
| 79. 单词搜索 | 回溯 | |
| 1601. 最多可达成的换楼请求 | 二进制枚举/回溯 | |
| 2044. 统计按位或能得到最大值的子集数目 | 二进制枚举/回溯 |
| 题目 | 关键字 | |
|---|---|---|
| 450. 删除二叉搜索树中的节点 | 递归 |
| 题目 | 关键字 | |
|---|---|---|
| 146. LRU缓存机制 | 双向链表/LinkedHashMap | 重点题 |
| 147. 对链表进行插入排序 | 链表、伪头 | |
| 148. 排序链表 | 链表、递归、归并排序 | |
| 237. 删除链表中的节点 | 链表操作 | |
| 剑指 Offer 24. 反转链表 | 双指针/递归/栈 | |
| 89. 数组形式的整数加法 | /栈/链表/数组/题目条件 | |
| 725. 分隔链表 | 链表操作 | |
| 430. 扁平化多级双向链表 | 链表操作、dfs |
| 题目 | 关键字 | |
|---|---|---|
| 127. 单词接龙 | BFS、队列、Hash表 | 重点题 |
| 剑指 Offer II 109. 开密码锁 | bfs | 重点题 |
| 题目 | 关键字 | |
|---|---|---|
| 1356. 根据数字二进制下 1 的数目排序 | 位运算、改变排序规则、题目条件利用 | |
| 剑指 Offer 56 - I. 数组中数字出现的次数 | 位运算、分组异或 | |
| 389. 找不同 | 异或/排序/计数/求和 | |
| 371. 两整数之和 | 位运算 | |
| 405. 数字转换为十六进制数 | 位运算 | |
| 面试题 16.01. 交换数字 | 位运算 | |
| 393. UTF-8 编码验证 | 位运算 |
| 题目 | 关键字 | |
|---|---|---|
| 73. 矩阵置零 | 数组、技巧 | |
| 31. 下一个排列 | 找规律 | |
| 406. 根据身高重建队列 | 思路、排序、插入 | |
| 剑指 Offer 64. 求1+2+…+n | 技巧性、&&短路的利用 | |
| 剑指 Offer 66. 构建乘积数组 | 技巧性、规律 | |
| 169. 多数元素 | 摩尔投票法/哈希/快排思想 | |
| 剑指 Offer 30. 包含min函数的栈 | 使用辅助栈 | |
| 43. 字符串相乘 | 字符串相乘 | 重点题 |
| 907. 子数组的最小值之和 | 最小栈 | 重点题 |
| 448. 找到所有数组中消失的数字 | 数组原地修改 | 重点题 |
| 1006. 笨阶乘 | 暴力/栈/发现规律 | |
| 453. 最小操作次数使数组元素相等 | 技巧 | |
| 229. 求众数 II | 摩尔投票法/哈希 | |
| 204. 计数质数 | 埃及筛/线性筛 |
| 题目 | 关键字 | |
|---|---|---|
| 327. 区间和的个数 | 归并排序、动态规划、分治 | 重点题 |
| 973. 最接近原点的 K 个点 | 快速排序/优先队列 | |
| 1122. 数组的相对排序 | 修改排序规则/计数 | |
| 1030. 距离顺序排列矩阵单元格 | 桶排序/排序/BFS/几何 | |
| 164. 最大间距 | 桶排序/基数排序 | |
| 剑指Offer45.把数组排成最小的数 | 修改排序规则 | 重点题 |
| 49. 字母异位词分组 | 排序/计数、哈希 | 重点题 |
| 75. 颜色分类 | 桶排序/双指针/技巧 | |
| 451. 根据字符出现频率排序 | 哈希、桶排序、堆排序 | |
| 1046. 最后一块石头的重量 | 大顶堆 | |
| 703. 数据流中的第 K 大元素 | 小顶堆 | 重点题 |
| 274. H 指数 | 排序 | 重点题 |
| 1996. 游戏中弱角色的数量 | 排序 | 重点题 |
| 969. 煎饼排序 | 排序 | |
| 980. 找出不同的二进制字符串 | 排序/哈希表 |
| 题目 | 关键字 | |
|---|---|---|
| 122. 买卖股票的最佳时机 II | 贪心算法、动态规划 | |
| 402. 移掉K位数字 | 贪心算法/单调栈(注意越界问题) | |
| 134. 加油站 | 贪心算法、枚举 | 重点题 |
| 452. 用最少数量的箭引爆气球 | 贪心算法、排序、区间合并 | 重点题 |
| 738. 单调递增的数字 | 贪心算法、发现规律 | 重点题 |
| 714. 买卖股票的最佳时机含手续费 | 贪心算法、动态规划 | 重点题 |
| 455. 分发饼干 | 排序 + 贪心算法 | |
| 605. 种花问题 | 贪心、判断条件考虑周全 | |
| 665. 非递减数列 | 贪心、分情况讨论 | 重点题 |
| 135. 分发糖果 | 贪心 | 重点题 |
| 674. 最长连续递增序列 | 贪心 | 重点题 |
| 316. 去除重复字母 | 贪心+单调栈 | 重点题 |
| 502. IPO | 堆、贪心算法 | 重点题 |
| 517. 超级洗衣机 | 贪心算法 | 重点题 |
| 1414. 和为 K 的最少斐波那契数字数目 | 贪心算法 | 重点题 |
| 1405. 最长快乐字符串 | 贪心算法 | 重点题 |
| 621. 任务调度器 | 贪心算法 | |
| 6553. 最优除法 | 数学+贪心 | |
| LCP 33. 蓄水 | 贪心 | |
| 781. 森林中的兔子 | 贪心 | |
| 954. 二倍数对数组 | 排序+贪心 |
| 题目 | 关键字 | |
|---|---|---|
| 258. 各位相加 | 递归、找规律、表达式 | |
| 172. 阶乘后的零 | 数学公式、技巧、找因子 | 重点题 |
| 231. 2的幂 | 余/二进制 | 重点题 |
| 1232. 缀点成线 | 斜率 | |
| 166. 分数到小数 | 长除法 | 重点题 |
| 题目 | 关键字 | |
|---|---|---|
| 222. 完全二叉树的节点个数 | 二分查找、位运算、完全二叉树 | |
| 34. 在排序数组中查找元素的第一个和最后一个位置 | 二分查找 | |
| 74. 搜索二维矩阵 | 二分查找 | |
| 1011. 在 D 天内送达包裹的能力 | 二分查找 | 重点题 |
| 1482. 制作 m 束花所需的最少天数 | 二分查找 | 重点题 |
| 162. 寻找峰值 | 二分查找 | |
| 1894. 找到需要补充粉笔的学生编号 | 二分查找+前缀和 | |
| 240. 搜索二维矩阵 II | 二分查找 | |
| 3287. 寻找重复数 | 二分查找/快慢指针 | |
| 1146. 快照数组 | 二分查找 |
| 题目 | 关键字 | |
|---|---|---|
| 剑指 Offer 14- I. 剪绳子 | 数学推导、贪心算法、循环求余 | 重点题 |
| 剑指 Offer 16. 数值的整数次方 | 二分法、快速幂 | 重点题 |
| 题目 | 关键字 | |
|---|---|---|
| 剑指 Offer 59 - I. 滑动窗口的最大值 | 双端队列、单调队列 | 重点题 |
| 239. 滑动窗口最大值 | 双端队列、单调队列 | 重点题 |
| DD-2020006. 简单游戏 | 滑动窗口、贪心算法 | 重点题 |
| 424. 替换后的最长重复字符 | 滑动窗口、双指针 | 重点题 |
| 643. 子数组最大平均数 I | 滑动窗口 | |
| 1423. 可获得的最大点数 | 滑动窗口/前缀和 | |
| 992. K 个不同整数的子数组 | 滑动窗口 | 重点题 |
| 567. 字符串的排列 | 滑动窗口 | |
| 1438. 绝对差不超过限制的最长连续子数组 | 滑动窗口、有序集合、单调队列 | |
| 1052. 爱生气的书店老板 | 滑动窗口 | |
| 395. 至少有 K 个重复字符的最长子串 | 滑动窗口、枚举/分治法 | 重点题 |
| 930. 和相同的二元子数组 | 滑动窗口/前缀和 |
| 题目 | 关键字 | |
|---|---|---|
| 560. 和为K的子数组 | 前缀和、HashMap | 重点题 |
| 724. 寻找数组的中心索引 | 前缀和 |
| 题目 | 关键字 | |
|---|---|---|
| 面试题 01.05. 一次编辑 | 分情况讨论 | |
| 468. 验证IP地址 | 分情况讨论 | |
| 564. 寻找最近的回文数 | 模拟、分情况讨论 |
| 题目 | 关键字 | |
|---|---|---|
| 547. 省份数量 | 图的遍历 | |
| 207. 课程表 | dfs/拓扑排序 |
| 题目 | 关键字 | |
|---|---|---|
| 1202. 交换字符串中的元素 | 并查集 | |
| 684. 冗余连接 | 并查集 | |
| 1319. 连通网络的操作次数 | 并查集 | |
| 1579. 保证图可完全遍历 | 并查集 | |
| 面试题 17.07. 婴儿名字 | 并查集 |
| 题目 | 关键字 | |
|---|---|---|
| 1091. 二进制矩阵中的最短路径 | BFS | 重点题 |
| 279. 完全平方数 | BFS | 重点题 |
| 2045. 到达目的地的第二短时间 | BFS | 重点题 |
| 2039. 网络空闲的时刻 | BFS |
| 题目 | 关键字 | |
|---|---|---|
| 232. 用栈实现队列 | 栈 | |
| 503. 下一个更大元素 II | 单调栈 循环数组 | 重点题 |
| 1047. 删除字符串中的所有相邻重复项 | 栈 | |
| 面试题 16.26. 计算器 | 栈 | |
| 面试题 03.05. 栈排序 | 栈 | |
| 剑指 Offer II 025. 链表中的两数相加 | 栈 | |
| 443. 压缩字符串 | 栈 | |
| 82. 删除排序链表中的重复元素 II | 链表 | |
| 414. 第三大的数 | 有序集合 | |
| 剑指 Offer II 036. 后缀表达式 | 栈 | |
| 622. 设计循环队列 | 队列 | |
| 034. 股票价格波动 | 数据结构组合 | |
| 739. 每日温度 | 单调栈 | |
| 394. 字符串解码 | 栈/递归 | |
| 1249. 移除无效的括号 | 栈 | |
| 432. 全 O(1) 的数据结构 | 数据结构组合(双向链表+hash | |
| 1190. 反转每对括号间的子串 | 栈 |
| 题目 | 关键字 | |
|---|---|---|
| 1486. 数组异或操作 | 数学 | |
| 223. 矩形面积 | 数学 | |
| 29. 两数相除) | 倍增加、数学 |