要求Java 17。基础算法配合极客时间王争的课程数据结构与算法之美食用。LeetCode配合力扣题库食用。
感谢OI Wiki
测试基于JUnit平台,测试用例在maven依赖下载完成后可直接运行。
algorithm包是基础算法实现。leetcode包是LeetCode的解题代码。
单元测试如下,主要是功能上的测试:
线性表
- 链表、循环链表、双向链表
- 基于数组的队列、基于链表的队列
- 基于数组的栈、基于链表的栈
- 跳表
哈希表
- 拉链法哈希表
排序
- 冒泡排序
- 桶排序
- 计数排序
- 堆排序
- 插入排序
- 归并排序
- 快速排序
- 基数排序
- 选择排序
- 希尔排序
堆
- 大、小顶堆
树
- 二叉搜索树
- 红黑树
- B+数
图
- 邻接表、邻接矩阵
- 深度优先搜索、广度优先搜索
- 拓扑排序
- Dijkstra最短路径算法
- A*搜索
二分法
- 二分查找
字符串匹配
- BF算法
- BK算法
- BM算法
- KMP算法
- 字典树
- AC自动机
贪心
- 霍夫曼编码
回溯
- 正则表达式
动态规划
- 编辑距离算法
杂项
- 位图与布隆过滤器
- 朴素贝叶斯算法
- 10 :正则表达式
- 34 :二分查找变体问题
- 46 :全排列问题
- 51 : N皇后
- 52 : N皇后2
- 70 : 爬楼梯问题
- 135: 分发糖果
- 206: 反转链表
- 215:数组中的第K个最大元素
- 295:数据流中位数
- 300 : 最长递增子序列
- 322 : 零钱兑换
- 347 :前 K 个高频元素
- 面试题 17.14. 最小K个数
- 面试题 08.06. 汉诺塔问题