题名 | 知识点 | 经典程度 | 第一遍 | 第二遍 | 第三遍 | 第四遍 | 第五遍 |
---|---|---|---|---|---|---|---|
11:盛水最多的容器 | 前后双指针 | 4.10 | 4.22 | 6.28 | |||
70:爬楼梯 | 动态规划 | 4.10 | 4.22 | 5.4 | 5.16 | 6.4 | |
283:移动零 | 前后双指针 | 4.10 | 4.22 | ||||
15:3Sum | 前后双指针 | 4.11 | 4.13 | 4.22 | |||
141:环形链表 | 快慢双指针 | 4.11 | |||||
16:最接近的 3Sum | 前后双指针 | 4.12 | 4.22 | ||||
18:4Sum | 前后双指针 | 4.12 | 5.23 | ||||
26:删除排序数组重复项 | 前后双指针 | 4.13 | 4.22 | 5.6 | |||
189:旋转数组 | 数学推理 | 4.13 | 4.22 | ||||
66:加一 | 数学 | 4.14 | |||||
88:合并两个有序数组 | 双指针 | 4.15 | 4.22 | 5.6 | 6.15 | ||
1281:整数积和之差 | 4.16 | ||||||
24:两两交换链表节点 | 4.16 | 4.22 | 5.6 | 7.2 | |||
142:环形链表II | 快慢双指针、数学 | 4.16 | 5.17 | ||||
977:有序数组的平方 | 双指针 | 4.17 | |||||
21:合并两个有序链表 | 链表指针 | 4.17 | |||||
25:k个一组翻转链表 | 三指针、数学 | 4.17 | 5.6 | ||||
面试题50:第一个只出现一次的字符 | HashMap | 4.19 | |||||
2:2Sum | HashMap | 4.19 | 4.25 | 4.27 | |||
3:无重复字符最小子串 | HashMap、双指针 | 4.19 | |||||
92:反转链表II | 链表 | 4.20 | 5.7 | ||||
面试题24/206:反转链表 | 链表 | 4.20 | 7.2 | ||||
19:删除倒数第n个节点 | 快慢指针、链表 | 4.20 | 5.7 | ||||
82:删除排序链表中重复元素 | 链表 | 4.20 | 5.7 | ||||
86:分隔链表 | 双指针 | 4.20 | 5.7 | ||||
290:单词规律 | HashMap | 4.20 | |||||
299:猜数字 | HashMap | 4.20 | |||||
350:数组交集II | HashMap | 4.21 | 6.6 | 7.13 | |||
392:判断子序列 | 双指针 | 4.22 | 7.27 | ||||
242:有效字母异位词 | HashMap | 4.23 | 5.3 | 6.15 | |||
258:各位相加 | 数学 | 4.23 | |||||
412:FizzBuzz | 条件分类 | 4.23 | |||||
49:字母异位词分组 | HashMap | 4.24 | |||||
104:二叉树的最大深度 | 二叉树、递归 | 4.24 | 4.30 | 7.28 | |||
111:二叉树的最小深度 | 二叉树、递归 | 104 | 4.24 | 4.30 | |||
110:平衡二叉树 | 二叉树、递归 | 4.24 | 5.3 | ||||
559:N叉树的最大深度 | 二叉树、递归 | 4.24 | 5.3 | ||||
144:二叉树的前序遍历 | 二叉树、DFS | 4.24 | 5.4 | 6.1 | |||
94:二叉树的中序遍历 | 二叉树、DFS | 4.24 | 5.4 | 6.1 | |||
589:N叉树的前序遍历 | 树、DFS | 4.24 | |||||
590:N叉树的后序遍历 | 树、DFS | 4.24 | |||||
263:丑数 | 4.25 | ||||||
264:丑数II | 三指针、数学 | 4.25 | 4.27 | 5.4 | 5.8 | ||
543:二叉树的直径 | 二叉树、DFS | 4.25 | 5.4 | 5.20 | |||
面试题01.08:零矩阵 | 矩阵 | 4.25 | |||||
1200:最小绝对差 | 数学 | 4.25 | |||||
75:颜色分类 | 双指针 | 4.26 | 5.4 | ||||
98:验证二叉搜索树 | 二叉树、DFS、递归 | 4.27 | 5.4 | ||||
99:恢复二叉搜索树 | 二叉树、逆序DFS | 4.27 | 5.4 | ||||
100:相同的树 | 二叉树、递归 | 4.27 | 5.4 | ||||
101:对称二叉树 | 二叉树、递归 | 100 | 4.27 | ||||
226:翻转二叉树 | 二叉树、递归 | 101 | 4.27 | 5.15 | |||
102:二叉树的层序遍历 | 二叉树、BFS | 4.28 | 4.29 | 5.4 | 5.11 | 6.2 | |
103:二叉树的锯齿状层序遍历 | 二叉树、BFS | 102 | 4.28 | 4.29 | 5.4 | ||
105:从前、中序遍历构造二叉树 | 二叉树、逆DFS | 4.29 | 5.5 | 5.22 | |||
106:从中、后序遍历构造二叉树 | 二叉树、逆DFS | 105 | 4.29 | 5.5 | |||
107:二叉树的层序遍历II | 二叉树、BFS | 102 | 4.29 | ||||
面试题05:替换空格 | 字符串 | 4.29 | |||||
面试题06:从头到尾打印链表 | 链表、递归 | 4.29 | |||||
22:括号生成 | 递归 | 4.30 | 5.12 | 6.4 | |||
297:二叉树的序列化与反序列化 | 二叉树、递归、BFS | 94/105/102 | 4.30 | ||||
108:将有序数组转化为BST | BST、逆DFS | 98/99/105/106 | 4.30 | 5.5 | |||
109:将有序链表转换为BST | BST、逆DFS、快慢指针 | 108 | 4.30 | 5.5 | |||
112:路径之和 | 二叉树、递归 | 111 | 4.30 | ||||
145:二叉树的后序遍历 | 二叉树、DFS | 4.30 | |||||
113:路径之和II | 二叉树、递归 | 112 | 5.1 | ||||
114:二叉树展开为链表 | 二叉树、仿后序遍历 | 5.1 | 8.1 | ||||
69:多数元素 | HashMap,投票法 | 5.7 | 5.23 | ||||
116:填充每一个节点的下一个右侧节点指针 | 二叉树、递归、迭代 | 5.8 | 5.11 | ||||
117:填充每个节点的下一个右侧节点指针II | 二叉树、递归 | 5.8 | 5.11 | ||||
46:全排列 | 回溯 | 5.8 | 5.22 | ||||
47:全排列II | 回溯、剪枝 | 5.9 | 5.22 | 5.24 | |||
77:组合 | 回溯 | 5.9 | 5.22 | 5.28 | |||
78:子集 | 回溯 | 5.9 | 5.22 | ||||
17:电话号码的字母组合 | 回溯 | 5.9 | |||||
51:N皇后 | 回溯、剪枝 | 5.9 | 6.3 | ||||
50:Pow(x,n) | 递归、快速幂 | 5.10 | |||||
236:二叉树的最近公共祖先 | 二叉树、递归 | 5.10 | 5.11 | 5.15 | |||
198:打家劫舍 | 动态规划 | 5.11 | 5.25 | 5.27 | |||
69:x的平方根 | 二分查找 | 5.12 | 5.16 | ||||
124:二叉树的最大路径和 | 递归 | 5.12 | |||||
127:单词接龙 | BFS | 5.13/14/20/21 | 6.4/5/7/28 | ||||
433:最小基因变化 | BFS | 5.13 | 5.21 | 6.4 | |||
455:分发饼干 | BFS | 5.13 | 5.15 | ||||
515:在每个数行中找最大值 | BFS | 5.13 | 5.22 | ||||
200:岛屿数量 | BFS | 5.14 | 5.22 | 6.3 | |||
33:搜索旋转排序数组 | 二分查找 | 5.14 | |||||
129:求根到叶子节点数字之和 | DFS | 5.14 | |||||
156:上下翻转二叉树 | 递归 | 5.14 | |||||
199:二叉树的右视图 | BFS | 5.14 | |||||
122:买卖股票的最佳时机II | 贪心算法 | 5.15 | |||||
55:跳跃游戏 | 贪心算法 | 5.15 | |||||
45:跳跃游戏II | 贪心算法 | 5.15 | 5.23 | ||||
860:柠檬水找零 | 贪心算法 | 5.15 | |||||
222:完全二叉树的节点个数 | 递归 | 5.15 | |||||
235: 二叉搜索树的最近公共祖先 | 递归 | 5.15 | |||||
230:二叉搜索树中第k小的元素 | 中序遍历DFS | 5.16 | 7.22 | ||||
74:搜索二维矩阵 | 二分查找 | 5.16 | 5.19 | ||||
367:有效的完全平方数 | 二分查找 | 5.16 | |||||
153:寻找旋转排序数组中的最小值 | 二分查找 | 5.16 | |||||
270:最接近的二叉搜索树值 | DFS | 5.17 | |||||
272:最接近的二叉搜索树值II | DFS | 5.17 | |||||
285:二叉搜索树中的顺序后继 | DFS | 5.17 | |||||
429:N 叉树的层序遍历 | BFS | 5.22 | |||||
35:搜索插入位置 | 二分查找 | 5.23 | 7.17 | ||||
62:不同路径 | 动态规划 | 5.24 | 5.25 | 6.16 | 7.7 | ||
63:不同路径II | 动态规划 | 5.24 | 5.25 | 7.7 | 7.19 | ||
53:最大子序和 | 动态规划 | 5.25 | 5.27 | 7.19 | |||
152:乘积最大的子数组 | 动态规划 | 5.25 | 5.27 | ||||
120:三角形最小路径和 | 动态规划 | 5.25 | 5.27 | 7.14 | |||
1143:最长公共子序列 | 动态规划 | 5.25 | 5.27 | 6.17 | |||
322:零钱兑换 | 动态规划 | 5.26 | 5.27 | 6.9 | |||
213:打家劫舍II | 动态规划 | 5.27 | |||||
337:打家劫舍III | 动态规划 | 5.27 | 8.5 | ||||
121:买卖股票的最佳时期 | 动态规划 | 5.29 | |||||
122:买卖股票的最佳时期II | 动态规划 | 5.29 | |||||
123:买卖股票的最佳时期III | 动态规划 | 5.29 | |||||
186:买卖股票的最佳时期IV | 动态规划 | 5.29 | |||||
309:买卖股票的最佳时期含冷冻期 | 动态规划 | 5.29 | 7.10 | ||||
714:买卖股票的最佳时期含手续费 | 动态规划 | 5.29 | |||||
434:字符串中的单词数 | 循环 | 5.30 | |||||
64:最小路径和 | 动态规划 | 5.30 | 6.22 | 7.23 | |||
221:最大正方形 | 动态规划 | 5.30 | |||||
621:任务调度器 | 数学推导 | 5.31 | |||||
547:朋友圈 | dfs、并查集 | 6.2 | 6.4 | ||||
36:有效的数独 | 数学 | 6.4 | 6.5 | ||||
37:解数独 | 数学 | 6.4 | |||||
130:被围绕的区域 | DFS | 6.4 | |||||
208:实现Trie | 字典树 | 6.4 | |||||
1091:二级制矩阵中的最短路径 | BFS | 6.5 | |||||
217:存在重复元素 | Set | 6.6 | |||||
79:单词搜索 | DFS+回溯 | 6.7 | |||||
212:单词搜索II | DFS+字典树 | 6.7 | |||||
509:斐波那契数 | 动态规划 | 6.8 | |||||
191:位1的个数 | 位运算 | 6.9 | |||||
190:颠倒二进制位 | 位运算 | 6.11 | |||||
338:比特位计数 | 位运算 | 6.11 | |||||
1122:数组的相对排序 | HashMap、桶排序 | 6.11 | |||||
146:LRU 缓存机制 | 设计 | 6.11 | 7.1 | ||||
231:2 的幂 | 位运算 | 6.12 | |||||
面试题 40:最小的 k 个数 | HashMap | 6.14 | |||||
56:合并区间 | 贪心算法 | 6.15 | 6.17 | ||||
面试题52:两个链表的第一个公共节点 | 双指针 | 6.16 | |||||
493:翻转对 | 归并排序 | 6.16 | |||||
5:最长回文子串 | 动态规划 | 6.17 | 6.21 | ||||
516:最长回文子序列 | 动态规划 | 6.17 | |||||
541:反转字符串II | 6.18 | ||||||
205:同构字符串 | HashMap | 6.19 | |||||
115:不同的子序列 | 动态规划 | 6.22 | |||||
72:编辑距离 | 动态规划 | 6.23 | |||||
518:零钱兑换II | 动态规划、背包问题 | 6.23 | 6.24 | 6.26 | |||
416:分割等和子串 | 动态规划 | 6.23 | |||||
125:验证回文串 | 前后双指针 | 6.27 | |||||
709:转换成小写字母 | 字符串处理 | 6.27 | |||||
887:鸡蛋掉落 | 动态规划 | 6.27 | |||||
7:整数反转 | 模运算、队列 | 6.28 | 6.29 | ||||
58:最后一个单词的长度 | 循环 | 6.28 | |||||
20:有效的括号 | 栈 | 6.28 | |||||
91:解码方法 | 动态规划 | 6.28 | |||||
剑指09:用两个栈实现队列 | 设计 | 6.30 | |||||
215:数组中的第K个最大元素 | 排序 | 6.30 | |||||
4:寻找两个正序数组的中位数 | 二分查找 | 7.1 | |||||
718:最长重复子数组 | 动态规划 | 7.1 | |||||
237:删除链表中的节点 | 链表循环 | 7.2 | |||||
344:反转字符串 | 前后双指针 | 7.2 | |||||
136:只出现一次的数字 | 位运算 | 7.2 | |||||
378:有序矩阵中第K小的元素 | 二位二分法 | 7.2 | |||||
44:通识符匹配 | 动态规划 | 7.5 | |||||
14:最长公共前缀 | 纵向匹配 | 7.6 | |||||
面试题16.11:跳水板 | 数学 | 7.9 | |||||
174:地下城游戏 | 动态规划 | 7.14 | |||||
96:不同的二叉搜索树 | 动态规划 | 7.15 | 7.21 | ||||
38:外观数列 | 字符串处理 | 7.18 | |||||
97:交错字符串 | 动态规划 | 7.18 | |||||
54:螺旋矩阵 | 螺旋遍历 | 7.19 | |||||
289:生命游戏 | 遍历 | 7.19 | |||||
312:戳气球 | 动态规划 | 7.19 | |||||
42 & 面试题17.21:接雨水 | 双指针、动态规划、单调栈 | 7.20 | 7.21 | ||||
167:两数之和II | 同向&双端双指针 | 7.20 | |||||
8:字符串转换整数(atoi) | 字符串处理 | 7.20 | |||||
84:柱状图中最大的矩形 | 双指针、单调栈 | 7.21 | |||||
154 & 剑指11:寻找旋转排序数组中的最小值II | 二分法 | 7.22 | |||||
347:前K个高频元素 | 优先队列/最小堆 | 7.22 | |||||
202:快乐数 | 快慢指针 | 7.22 | |||||
287:寻找重复数 | 快慢指针 | 7.22 | |||||
118:杨辉三角 | 字符串 | 7.23 | |||||
119:杨辉三角II | 字符串 | 7.23 | |||||
1025:除数博弈 | 数学 | 7.24 | |||||
23:合并K个排序列表 | 小顶堆、分治 | 7.24 | |||||
279:完全平方数 | 动态规划 | 7.24 | |||||
496:下一个更大元素I | 单调栈 | 7.25 | 7.26 | ||||
410:分割数组的最大值 | 贪心算法 | 7.26 | |||||
1118:一月有多少天 | 数学 | 7.26 | |||||
739:每日温度 | 单调栈 | 7.26 | |||||
316:去除重复字母 | 单调栈 | 7.26 | |||||
1081:不同字符的最小子序列 | 单调栈 | 7.26 | |||||
402:移掉K位数字 | 单调栈 | 7.27 | |||||
239:滑动窗口最大值 | 7.28 | ||||||
384:打乱数组 | 洗牌算法 | 7.28 | |||||
10:正则表达式匹配 | 动态规划 | 7.29 | |||||
13:罗马数字转整数 | HashMap | 7.29 | |||||
171:Excel表列序号 | 数学 | 7.29 | |||||
268:缺失数字 | HashMap | 7.29 | |||||
160:相交链表 | 7.29 | ||||||
343&剑指14-I:整数拆分/剪绳子 | 动态规划 | 7.30 | |||||
326:3 的幂 | 循环/数学 | 7.30 | |||||
234:回文链表 | 快慢指针 | 7.30 | |||||
172:阶乘后的零 | 数学 | 7.30 | |||||
面试题08.03:魔术索引 | 遍历 | 7.31 | |||||
175:组合两个表 | SQL | 7.31 | |||||
415:字符串相加 | 数学 | 8.3 | |||||
207:课程表 | DFS | 8.4 | |||||