/Leetcode

My solutions and experiences for Leetcode.

Primary LanguageJava

题名 知识点 经典程度 第一遍 第二遍 第三遍 第四遍 第五遍
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