项目简介
本项目主要分为两个部分
- 基础数据结构:会使用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按难易分类
写在最后
我的数据结构是从刘宇波老师的玩转数据结构开始学起的,算是我数据结构的启蒙老师,课程都是满满的干货,如果有需要,可以购买此课程看看