总结自己学习过的数据结构和算法,以及按照题目类型分类。
根据灵神的说法:
一个算法模板应当涵盖以下几点:
- 对该算法的基本介绍(核心思想、复杂度等)
- 参考链接或书籍章节(讲的比较好的资料)
- 模板代码(可以包含一些注释、使用说明)
- 模板补充内容(常见题型中的额外代码、建模技巧等)
- 相关题目链接(模板题、经典题、思维转换题等)
那这个仓库的目标是:用自己的代码风格,实现常见的数据结构和算法模板。
实现过程:
- 通过「默写」代码,了解模板中的细节,增加套用模板的熟练度,避免bug。
- 通过「阅读」他人优秀的代码,提高自身代码的健壮性和可读性。
- 通过「死记」解题代码,串联其他类似的题目
- 集合 set.go
- 堆
- 线段树
- 树
- 二分查找
- 归并排序
- 记忆化搜索 memory_search.go 实现了类似Python的cache装饰器
- 背包 DP knapsack.go
- 0-1 背包
- 完全背包
- 分组背包
- 线性 DP
- 最短路径 path_shortest.go
- Floyd (任意图上多源最短路径算法)
- Dijkstra (非负权图上单源最短路径算法)
为了方便在IDE中解题,编写了脚本用于生成LeetCode的代码模板。
- 生成每日一题的代码模板
- 根据 「题号」 或 「题名」problem slug 生成代码模板
- LCR等前缀题目,仅支持通过题名生成模板
- 支持本地运行单元测试和自定义测试用例。
- 查看题解的原始 markdown
- 交互式查看题解