-
🔧字符串匹配算法
-
🔧桶排序
-
二叉树(以下代码都是在刷LeetCode时写的, 所有只有功能函数, 请见谅!另外前序、中序、后序遍历算法都给出了递归和非递归两种实现方式)
-
🔧二叉搜索树(BST)(其中删除节点操作在LeetCode刷题时使用了递归方法, 中序遍历给出了递归、使用栈的非递归以及不使用栈的非递归实现)
-
🔧图的两种遍历方式
-
🔧最小生成树
-
🔧单源点最短路径
-
🔧所有节点对最短路径
-
🔧编辑距离问题(算法导论中6种字符操作, LeetCode中3种字符操作)
- 🎉 感谢gzh提供了Java的解题代码。
- C++、Python、Go的代码由我完成。
ID | Title | Difficulty | C++ | Java | Python | Go |
---|---|---|---|---|---|---|
001 | 两数之和 | Easy | Code | Code | Code | Code |
002 | 两数相加 | Medium | Code | Code | Code | Code |
003 | 无重复字符的最长子串 | Medium | Code | Code | Code | |
004 | 两个排序数组的中位数 | Hard | Code | Code | Code | |
005 | 最长回文子串 | Medium | Code | Code | Code | |
006 | Z字形变换 | Medium | Code | Code | Code | |
007 | 反转整数 | Easy | Code | Code | Code | |
008 | 字符串转整数 (atoi) | Medium | Code | Code | Code | |
009 | 回文数 | Easy | Code | Code | Code | |
010 | 正则表达式匹配 | Hard | Code | Code | Code | |
011 | 盛最多水的容器 | Medium | Code | Code | Code | |
012 | 整数转罗马数字 | Medium | Code | Code | Code | |
014 | 最长公共前缀 | Easy | Code | Code | Code | |
015 | 三数之和 | Medium | Code | Code | Code | |
016 | 最接近的三数之和 | Medium | Code | Code | Code | |
017 | 电话号码的字母组合 | Medium | Code | Code | Code | |
018 | 四数之和 | Medium | Code | Code | Code | |
019 | 删除链表的倒数第N个节点 | Medium | Code | Code | Code | |
020 | 有效的括号 | Easy | Code | Code | Code | |
021 | 合并两个有序链表 | Easy | Code | Code | Code | |
022 | 括号生成 | Medium | Code | Code | Code | |
023 | 合并K个排序链表 | Hard | Code | Code | Code | |
024 | 两两交换链表中的节点 | Medium | Code | Code | Code | |
026 | 删除排序数组中的重复项 | Easy | Code | Code | Code | |
027 | 移除元素 | Easy | Code | Code | Code | |
030 | 与所有单词相关联的字串 | Hard | Code | Code | Code | |
031 | 下一个排列 | Medium | Code | Code | Code | |
032 | 最长有效括号 | Hard | Code | Code | Code | |
033 | 搜索旋转排序数组 | Medium | Code | Code | Code | |
034 | 在排序数组中查找元素的第一个和最后一个位置 | Medium | Code | Code | Code | |
035 | 搜索插入位置 | Easy | Code | Code | Code | |
036 | 有效的数独 | Medium | Code | Code | Code | |
037 | 解数独 | Hard | Code | Code | Code | |
039 | 组合总和 | Medium | Code | Code | Code | |
040 | 组合总和2 | Medium | Code | Code | Code | |
041 | 缺失的第一个正数 | Hard | Code | Code | Code | |
042 | 接雨水 | Hard | Code | Code | Code | |
043 | 字符串相乘 | Medium | Code | Code | Code | |
044 | 通配符匹配 | Hard | Code | Code | Code | |
045 | 跳跃游戏2 | Hard | Code | Code | Code | |
046 | 全排列 | Medium | Code | Code | Code | |
047 | 全排列2 | Medium | Code | Code | Code | |
048 | 旋转图像 | Medium | Code | Code | Code | |
049 | 字母异位词分组 | Medium | Code | Code | Code | |
050 | Pow(x,n) | Medium | Code | Code | Code | |
051 | N皇后 | Hard | Code | no | Code | |
052 | N皇后2 | Hard | Code | no | Code | |
053 | 最大子序和 | Easy | Code | Code | Code | |
054 | 螺旋矩阵 | Medium | Code | Code | Code | |
055 | 跳跃游戏 | Medium | Code | Code | Code | |
056 | 合并区间 | Medium | Code | Code | Code | |
057 | 插入区间 | Hard | Code | Code | Code | |
058 | 最后一个单词的长度 | Easy | Code | Code | Code | |
059 | 螺旋矩阵2 | Medium | Code | Code | Code | |
060 | 第k个排列 | Medium | Code | Code | no | |
061 | 旋转链表 | Medium | Code | Code | no | |
062 | 不同的路径 | Medium | Code | Code | no | |
063 | 不同路径 | Medium | Code | Code | no | |
064 | 最小路径和 | Medium | Code | Code | no | |
065 | 有效数字 | Hard | Code | Code | no | |
066 | 加一 | Easy | Code | Code | no | |
067 | 二进制求和 | Easy | Code | Code | no | |
068 | 文本左右对齐 | Hard | Code | Code | no | |
070 | 爬楼梯 | Easy | Code | Code | no | |
071 | 简化路径 | Medium | Code | Code | no | |
072 | 编辑距离 | Hard | Code | Code | no | |
074 | 搜索二维矩阵 | Medium | Code | Code | no | |
075 | 分类颜色 | Medium | Code | Code | no | |
076 | 最小覆盖子串 | Hard | Code | Code | no | |
077 | 组合 | Medium | Code | Code | no | |
078 | 子集 | Medium | Code | Code | no | |
079 | 单词搜索 | Medium | Code | Code | no | |
080 | 删除排序数组中的重复项2 | Medium | Code | Code | no | |
082 | 删除排序链表中的重复元素2 | Medium | Code | Code | no | |
083 | 删除排序链表中的重复元素 | Easy | Code | Code | no | |
084 | 柱状图中的最大矩形 | Hard | Code | Code | no | |
085 | 最大矩形 | Hard | Code | Code | no | |
086 | 分隔链表 | Medium | Code | Code | no | |
090 | 子集2 | Medium | Code | Code | no | |
091 | 解码方法 | Medium | Code | no | no | |
092 | 反转链表2 | Medium | Code | no | no | |
093 | 复原IP地址 | Medium | Code | no | no | |
094 | 二叉树的中序遍历 | Medium | Code | no | Code | Code |
095 | 不同的二叉搜索树2 | Medium | Code | no | Code | Code |
096 | 不同的搜索二叉树 | Medium | Code | no | Code | Code |
097 | 交错字符串 | Hard | Code | no | no | |
098 | 验证二叉搜索树 | Medium | Code | no | Code | Code |
099 | 恢复二叉搜索树 | Hard | Code | no | Code | Code |
100 | 相同的树 | Easy | Code | no | Code | Code |
101 | 对称二叉树 | Easy | Code | no | Code | Code |
102 | 二叉树的层次遍历 | Medium | Code | no | Code | Code |
103 | 二叉树的锯齿层次遍历 | Medium | Code | no | Code | Code |
104 | 二叉树的最大深度 | Easy | Code | no | Code | Code |
105 | 前序中序构造二叉树 | Medium | Code | no | Code | Code |
106 | 中序后序构造二叉树 | Medium | Code | no | Code | Code |
107 | 二叉树的层次遍历2 | Easy | Code | no | Code | Code |
108 | 将有序数组转换为二叉搜索树 | Easy | Code | no | Code | Code |
109 | 有序链表转换二叉搜索树 | Medium | Code | no | Code | Code |
110 | 平衡二叉树 | Easy | Code | no | Code | Code |
111 | 二叉树的最小深度 | Easy | Code | no | Code | Code |
112 | 路径总和 | Easy | Code | no | Code | Code |
113 | 路径总和2 | Medium | Code | no | Code | Code |
114 | 二叉树展开为链表 | Medium | Code | no | Code | Code |
115 | 不同的子序列 | Hard | Code | no | no | |
116 | 填充同一层的兄弟节点 | Medium | Code | no | Code | 没有解题选项 |
117 | 填充同一层的兄弟节点2 | Medium | Code | no | Code | 没有解题选项 |
118 | 杨辉三角形 | Easy | Code | no | no | |
119 | 杨辉三角形2 | Easy | Code | no | no | |
120 | 三角形最短路径和 | Medium | Code | no | no | |
121 | 买卖股票的最佳时机 | Easy | Code | no | no | |
122 | 买卖股票的最佳时机2 | Easy | Code | no | no | |
123 | 买卖股票的最佳时机3 | Hard | Code | no | no | |
124 | 二叉树中的最大路径和 | Hard | Code | no | Code | Code |
127 | 单词接龙 | Medium | Code | no | no | |
128 | 最长连续序列 | Hard | Code | no | no | |
129 | 求根到叶子节点数字之和 | Medium | Code | no | Code | Code |
131 | 分割回文串 | Medium | Code | no | no | |
132 | 分割回文串2 | Hard | Code | no | no | |
133 | 克隆图 | Medium | Code | no | no | |
134 | 加油站 | Medium | Code | no | no | |
135 | 分发糖果 | Hard | Code | no | no | |
139 | 单词拆分 | Medium | Code | no | no | |
140 | 单词拆分2 | Hard | Code | no | no | |
141 | 环形链表 | Easy | Code | no | no | |
142 | 环形链表2 | Medium | Code | no | no | |
144 | 二叉树的前序遍历 | Medium | Code | no | Code | Code |
145 | 二叉树的后序遍历 | Hard | Code | no | Code | Code |
146 | LRU缓存机制 | Hard | Code | no | no | |
147 | 对链表进行插入排序 | Medium | Code | no | no | |
148 | 排序链表 | Medium | Code | no | no | |
150 | 逆波兰符求值 | Medium | Code | no | no | |
152 | 最大乘积子序列 | Medium | Code | no | no | |
160 | 相交链表 | Easy | Code | no | no | |
162 | 寻找峰值 | Medium | Code | no | no | |
164 | 最大间距 | Hard | Code | no | no | |
165 | 比较版本号 | Medium | Code | no | no | |
168 | Excel表列名称 | Easy | Code | no | no | |
169 | 求众数 | Easy | Code | no | no | |
172 | 阶乘后的零 | Easy | Code | no | no | |
173 | 二叉搜索树迭代器 | Medium | Code | no | Code | Code |
174 | 地下城游戏 | Hard | Code | no | no | |
179 | 最大数 | Medium | Code | no | no | |
188 | 买卖股票的最佳时机IV | Hard | Code | no | no | |
198 | 打家劫舍 | Easy | Code | no | no | |
199 | 二叉树的右视图 | Medium | Code | no | Code | |
200 | 岛屿的个数 | Medium | Code | no | no | |
203 | 删除链表中的节点 | Easy | Code | no | no | |
206 | 反转链表 | Easy | Code | no | no | |
207 | 课程表 | Medium | Code | no | no | |
208 | 实现Trie(前缀树) | Medium | Code | no | no | |
209 | 长度最小的子数组 | Medium | Code | no | no | |
210 | 课程表2 | Medium | Code | no | no | |
211 | 添加与搜索单词-数据结构设计 | Medium | Code | no | no | |
212 | 单词搜索2 | Hard | Code | no | no | |
213 | 打家劫舍2 | Medium | Code | no | no | |
214 | 最短回文串 | Hard | Code | no | no | |
215 | 数组中第k大个元素 | Medium | Code | no | no | |
216 | 组合总和3 | Medium | Code | no | no | |
218 | 天际线问题 | Hard | Code | no | no | |
221 | 最大正方形 | Medium | Code | no | no | |
222 | 完全二叉树的节点个数 | Medium | Code | no | no | |
223 | 矩形面积 | Medium | Code | no | no | |
226 | 翻转二叉树 | Easy | Code | no | no | |
228 | 汇总区间 | Medium | Code | no | no | |
229 | 求众数2 | Medium | Code | no | no | |
230 | 二叉搜索树中第K小的元素 | Medium | Code | no | no | |
234 | 回文链表 | Easy | Code | no | no | |
235 | 二叉搜索树的最近公共祖先 | Easy | Code | no | no | |
236 | 二叉树的最近公共祖先 | Medium | Code | no | no | |
237 | 删除二叉树中的节点 | Easy | Code | no | no | |
238 | 除自身以外数组的乘积 | Medium | Code | no | no | |
239 | 滑动窗口最大值 | Hard | Code | no | no | |
240 | 搜索二维矩阵2 | Medium | Code | no | no | |
241 | 为运算表达式设计优先级 | Medium | Code | no | no | |
257 | 二叉树的所有路径 | Easy | Code | no | no | |
264 | 丑数2 | Medium | Code | no | no | |
274 | H指数 | Medium | Code | no | no | |
279 | 完全平方数 | Medium | Code | no | no | |
282 | 给表达式添加运算符 | Hard | Code | no | no | |
284 | 顶端迭代器 | Medium | Code | no | no | |
287 | 寻找重复数 | Medium | Code | no | no | |
289 | 生命游戏 | Medium | Code | no | no | |
295 | 数据流的中位数 | Hard | Code | no | no | |
297 | 二叉树的序列化与反序列化 | Hard | Code | no | Code | 没有解题选项 |
299 | 猜数字游戏 | Medium | Code | no | no | |
300 | 最长上升子序列 | Medium | Code | no | no | |
301 | 删除无效的括号 | Hard | Code | no | no | |
303 | 区域和检索-数组不可变 | Easy | Code | no | no | |
304 | 二维区域和检索-矩阵不可变 | Medium | Code | no | no | |
309 | 最佳买卖股票时机含冷冻期 | Medium | Code | no | no | |
310 | 最小高度树 | Medium | Code | no | no | |
312 | 戳气球 | Hard | Code | no | no | |
315 | 计算右侧小于当前元素的个数 | Hard | Code | no | no | |
316 | 去除重复字母 | Hard | Code | no | no | |
319 | 灯泡开关 | Medium | Code | no | no | |
321 | 拼接最大数 | Hard | Code | no | no | |
322 | 零钱兑换 | Medium | Code | no | no | |
326 | 3的幂 | Easy | Code | no | no | |
328 | 奇偶链表 | Medium | Code | no | no | |
329 | 矩阵中的最长递增路径 | Hard | Code | no | no | |
331 | 验证二叉树的前序序列化 | Medium | Code | no | no | |
332 | 重新安排行程 | Medium | Code | no | no | |
334 | 递增的三元子序列 | Medium | Code | no | no | |
336 | 回文对 | Hard | Code | no | no | |
337 | 打家劫舍3 | Medium | Code | no | no | |
341 | 扁平化嵌套列表迭代器 | Medium | Code | no | no | |
343 | 整数拆分 | Medium | Code | no | no | |
344 | 反转字符串 | Medium | Code | no | no | |
347 | 前K个高频元素 | Medium | Code | no | no | |
354 | 俄罗斯套娃信封问题 | Hard | Code | no | no | |
357 | 计算各个位数不同的数字个数 | Medium | Code | no | no | |
365 | 水壶问题 | Medium | Code | no | no | |
368 | 最大整除子集 | Medium | Code | no | no | |
373 | 查找和最小的K对数字 | Medium | Code | no | no | |
376 | 摆动序列 | Medium | Code | no | no | |
377 | 组合总和Ⅳ | Medium | Code | no | no | |
378 | 有序矩阵中第K小的元素 | Medium | Code | no | no | |
380 | 常数时间插入、删除和获取随机元素 | Medium | Code | no | no | |
381 | O(1)时间插入、删除和获取随机元素-允许重复 | Hard | Code | no | no | |
387 | 字符串中的第一个唯一字符 | Easy | Code | no | no | |
394 | 字符串解码 | Medium | Code | no | no | |
395 | 至少有K个重复字符的最长子串 | Medium | Code | no | no | |
396 | 旋转函数 | Medium | Code | no | no | |
402 | 移掉K位数字 | Medium | Code | no | no | |
403 | 青蛙过河 | Hard | Code | no | no | |
404 | 左叶子之和 | Easy | Code | no | no | |
406 | 根据身高重建队列 | Medium | Code | no | no | |
409 | 最长回文串 | Easy | Code | no | no | |
413 | 等差数列划分 | Medium | Code | no | no | |
416 | 分割等和子集 | Medium | Code | no | no | |
424 | 替换后的最长重复字符 | Medium | Code | no | no | |
429 | N叉树的层序遍历 | Easy | Code | no | no | |
433 | 最小基因变化 | Medium | Code | no | no | |
435 | 无重叠区间 | Medium | Code | no | no | |
436 | 寻找右区间 | Medium | Code | no | no | |
437 | 路径总和3 | Easy | Code | no | no | |
442 | 数组中的重复数据 | Medium | Code | no | no | |
445 | 两数相加2 | Medium | Code | no | no | |
449 | 序列化和反序列化二叉搜索树 | Medium | Code | no | no | |
450 | 删除二叉搜索树中的节点 | Medium | Code | no | no | |
451 | 根据字符出现频率排序 | Medium | Code | no | no | |
452 | 用最少数量的箭引爆气球 | Medium | Code | no | no | |
454 | 四数之和2 | Medium | Code | no | no | |
456 | 132模式 | Medium | Code | no | no | |
462 | 最少移动次数使数组元素相等2 | Medium | Code | no | no | |
472 | 连接词 | Hard | Code | no | no | |
474 | 一和零 | Medium | Code | no | no | |
486 | 预测赢家 | Medium | Code | no | no | |
488 | 祖玛游戏 | Hard | Code | no | no | |
491 | 递增子序列 | Medium | Code | no | no | |
494 | 目标和 | Medium | Code | no | no | |
495 | 提莫攻击 | Medium | Code | no | no | |
501 | 二叉搜索树中的众数 | Easy | Code | no | no | |
503 | 下一个更大元素2 | Medium | Code | no | no | |
508 | 出现次数最多的子树元素和 | Medium | Code | no | no | |
513 | 找树左下角的值 | Medium | Code | no | no | |
515 | 在每个树行中找最大值 | Medium | Code | no | no | |
516 | 最长回文子序列 | Medium | Code | no | no | |
518 | 零钱兑换2 | Medium | Code | no | no | |
520 | 检测大写字母 | Easy | Code | no | no | |
524 | 通过删除字母匹配到字典里最长单词 | Medium | Code | no | no | |
525 | 连续数组 | Medium | Code | no | no | |
526 | 优美的排列 | Medium | Code | no | no | |
538 | 把二叉搜索树转换为累加树 | Easy | Code | no | no | |
540 | 有序数组中的单一元素 | Medium | Code | no | no | |
542 | 01矩阵 | Medium | Code | no | no | |
543 | 二叉树的直径 | Easy | Code | no | no | |
547 | 朋友圈 | Medium | Code | no | no | |
552 | 学生出勤记录 | Hard | Code | no | no | |
554 | 砖墙 | Medium | Code | no | no | |
559 | N叉树的最大深度 | Easy | Code | no | no | |
560 | 和为K的子数组 | Medium | Code | no | no | |
572 | 另一个树的子树 | Easy | Code | no | no | |
576 | 出界的路径数 | Medium | Code | no | no | |
583 | 两个字符串的删除操作 | Medium | Code | no | no | |
589 | N叉树的前序遍历 | Easy | Code | no | no | |
590 | N叉树的后序遍历 | Easy | Code | no | no | |
617 | 合并二叉树 | Easy | Code | no | no | |
623 | 在二叉树中增加一行 | Medium | Code | no | no | |
630 | 课程表3 | Hard | Code | no | no | |
637 | 二叉树的层平均值 | Easy | Code | no | no | |
646 | 最长数对链 | Medium | Code | no | no | |
647 | 回文子串 | Medium | Code | no | no | |
650 | 只有两个键的键盘 | Medium | Code | no | no | |
654 | 最大二叉树 | Medium | Code | no | no | |
655 | 输出二叉树 | Medium | Code | no | no | |
658 | 找到 K 个最接近的元素 | Medium | Code | no | no | |
662 | 二叉树最大宽度 | Medium | Code | no | no | |
670 | 最大交换 | Medium | Code | no | no | |
671 | 二叉树中第二小的节点 | Easy | Code | no | no | |
673 | 最长递增子序列的个数 | Medium | Code | no | no | |
677 | 键值映射 | Medium | Code | no | no | |
678 | 有效的括号字符串 | Medium | Code | no | no | |
679 | 24点游戏 | Hard | Code | no | no | |
684 | 冗余连接 | Medium | Code | no | no | |
688 | “马”在棋盘上的概率 | Medium | Code | no | no | |
692 | 前K个高频单词 | Medium | Code | no | no | |
700 | 二叉搜索树中的搜索 | Easy | Code | no | no | |
701 | 二叉搜索树中的插入操作 | Medium | Code | no | no | |
704 | 二分查找 | Easy | Code | no | no | |
712 | 两个字符串的最小ASCII删除和 | Medium | Code | no | no | |
718 | 最长重复子数组 | Medium | Code | no | no | |
721 | 账户合并 | Medium | Code | no | no | |
725 | 分隔链表 | Medium | Code | no | no | |
729 | 我的日程安排表1 | Medium | Code | no | no | |
731 | 我的日程安排表2 | Medium | Code | no | no | |
738 | 单调递增的数字 | Medium | Code | no | no | |
739 | 每日温度 | Medium | Code | no | no | |
740 | 删除与获得点数 | Medium | Code | no | no | |
743 | 网络延迟时间 | Medium | Code | no | no | |
765 | 情侣牵手 | Hard | Code | no | no | |
797 | 所有可能路径 | Easy | Code | no | no | |
802 | 找到最终的安全状态 | Medium | Code | no | no | |
807 | 保持城市天际线 | Medium | Code | no | no | |
814 | 二叉树剪枝 | Medium | Code | no | no | |
841 | 钥匙和房间 | Medium | Code | no | no | |
894 | 所有可能的满二叉树 | Medium | Code | no | no | |
919 | 完全二叉树插入器 | Medium | Code | Code | Code | |
987 | 二叉树的垂序遍历 | Medium | Code |