项目简介
本项目主要分为两个部分
- 基础数据结构:会使用Java和TypeScript实现底层的数据结构,并考虑数据结构中每个操作的时间复杂度
- leetcode算法:算法主要会记录在本仓库的issue中,leetcode的每一个分类我都以标签的形式标记出来,欢迎参考
学习算法是一个漫长的过程,没法靠突击,只能一步一步慢慢积累。
数据结构
| 数据结构 | Java版 | TypeScript版 |
|---|---|---|
| 数组 | Array | Array |
| 使用数组实现的队列 | ArrayQueue | ArrayQueue |
| 使用数组实现的栈 | ArrayStack | ArrayStack |
| 链表 | LinkedList | LinkedList |
| 使用链表实现的队列 | LinkedListQueue | LinkedListQueue |
| 使用链表实现的栈 | LinkedListStack | LinkedListStack |
| 循环队列 | LoopQueue | LoopQueue |
| 最大堆 | MaxHeap | MaxHeap |
| 优先队列 | PriorityQueue | PriorityQueue |
| 双向链表 | DoubleLinkedList | DoubleLinkedList |
| 二分搜索树 | BST | BST |
| 基于二分搜索树的集合 | BSTSet | BSTSet |
| 基于链表的集合 | LinkedListSet | LinkedListSet |
| 基于链表的映射 | LinkedListMap | LinkedListMap |
| 基于二分搜索树的映射 | BSTMap | BSTMap |
| 线段树 | SegmentTree | SegmentTree |
| 字典树 | Trie | Trie |
| 并查集(基于数组索引) | UnionFind | UnionFind |
| 并查集(基于树) | UnionFind2 | UnionFind2 |
| 并查集(使用节点size优化) | UnionFind3 | UnionFind3 |
| 并查集(使用rank优化) | UnionFind4 | UnionFind4 |
| 平衡二叉树 | AVLTree | AVLTree |
leetcode按题目类型分类
- [x] 数组
- [x] 回溯算法
- [x] 广度优先搜索
- [x] 二分查找
- [x] 位运算
- [x] 二叉树
- [x] 深度优先搜索
- [x] 双指针
- [x] 动态规划
- [x] 贪心算法
- [x] Hash表
- [x] 链表
- [x] 数学运算
- [x] 队列
- [x] 递归
- [x] 集合Set
- [x] 滑动窗口
- [x] 栈
leetcode按难易分类
写在最后
我的数据结构是从刘宇波老师的玩转数据结构开始学起的,算是我数据结构的启蒙老师,课程都是满满的干货,如果有需要,可以购买此课程看看