Skip to content

liuhouer/np-algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
六猴儿
Oct 15, 2020
b459de1 · Oct 15, 2020

History

27 Commits
Sep 20, 2020
Sep 20, 2020
Sep 20, 2020
Sep 20, 2020
Sep 20, 2020
Sep 20, 2020
Sep 20, 2020
Sep 20, 2020
Sep 20, 2020
Sep 20, 2020
Oct 12, 2020
Sep 29, 2020
Sep 29, 2020
Sep 29, 2020
Sep 29, 2020
Sep 29, 2020
Oct 11, 2020
Sep 29, 2020
Oct 11, 2020
Oct 11, 2020
Oct 11, 2020
Oct 14, 2020
Oct 15, 2020
Sep 20, 2020
Oct 8, 2020

Repository files navigation

np-algorithm

第一章 算法与数据结构 [无代码]
1-1 欢迎大家来到算法与数据结构的世界 [无代码]
1-2 学习算法和数据结构到底有没有用? [无代码]
1-3 更多课程学习注意事项 [无代码]
1-4 课程编程环境的搭建 [无代码]
1-5 【文字】JDK 的国内下载链接,和更多学习方法 [无代码]
第二章 线性查找法 (02-Linear-Search/)
2-1 什么是算法 [无代码]
2-2 最简单的算法:线性查找法 [无代码]
2-3 实现线性查找法 Java
2-4 使用泛型 Java
2-5 使用自定义类测试我们的算法 Java
2-6 循环不变量 [无代码]
2-7 简单的复杂度分析 [无代码]
2-8 常见的时间复杂度 [无代码]
2-9 测试算法性能 Java
2-10 本章小结 [无代码]
第三章 选择排序法 (03-Selection-Sort/)
3-1 最简单的排序算法:选择排序法 [无代码]
3-2 实现选择排序法 Java
3-3 使用带约束的泛型 Java
3-4 使用 Comparable 接口 Java
3-5 选择排序法的复杂度分析 Java
3-6 作业:换个角度实现选择排序法 [无代码]
3-7 [文字] 作业解析:换个角度实现选择排序法 Java
第四章 插入排序法 (04-Insertion-Sort/)
4-1 插入排序法 [无代码]
4-2 实现插入排序法 Java
4-3 插入排序法的一个小优化 Java
4-4 插入排序法的特性 Java
4-5 作业:换个角度实现插入排序法 [无代码]
4-6 [文字] 作业解析:换个角度实现插入排序法 Java
4-7 本章小结 [无代码]
第五章 最基础的数据结构:不要小瞧数组 (05-Arrays/)
5-1 为什么要研究数据结构 [无代码]
5-2 使用Java中的数组 Java
5-3 二次封装属于我们自己的数组 Java
5-4 向数组中添加元素 Java
5-5 数组中查询元素和修改元素 Java
5-6 包含,搜索和删除 Java
5-7 使用泛型 Java
5-8 动态数组 Java
5-9 简单的复杂度分析 [无代码]
5-10 均摊复杂度和防止复杂度的震荡 Java
第六章 栈和队列 (06-Stacks-and-Queues/)
6-1 栈和栈的应用:撤销操作和系统栈 [无代码]
6-2 栈的基本实现 Java
6-3 栈的另一个应用:括号匹配 Java
6-4 关于Leetcode的更多说明 Java
6-5 数组队列 Java
6-6 循环队列 Java
6-7 循环队列的实现 Java
6-8 数组队列和循环队列的比较 Java
6-9 作业:换个方式实现队列? [无代码]
6-10 [文字] 作业解析:不浪费一个空间的循环队列 Java
6-11 [文字] 作业解析:没有size成员变量的循环队列 Java
6-12 作业:双端队列 [无代码]
6-13 [文字] 作业解析:实现双端队列 Java
6-14 [文字] 扩展阅读:Java 程序员,别用 Stack?! [无代码]
第六章补充:栈和队列其他习题 (06x-Stacks-and-Queues/)
6x-1 作业:用栈实现队列和用队列实现栈 [无代码]
6x-2 [文字] 作业解析:用队列实现栈 Java
6x-3 [文字] 作业解析:用栈实现队列 Java
6x-4 [文字] 更多栈和队列的问题推荐 [无代码]
第七章 最基础的动态数据结构:链表 (07-Linked-List/)
7-1 什么是链表 Java
7-2 在链表中添加元素 Java
7-3 使用链表的虚拟头结点 Java
7-4 链表的遍历,查询和修改 Java
7-5 从链表中删除元素 Java
7-6 使用链表实现栈 Java
7-7 带有尾指针的链表:使用链表实现队列 Java
7-8 [文字] 链表的性能问题 Java
第八章 透过链表看递归 (08-Recursion/)
8-1 Leetcode中和链表相关的问题 Java
8-2 测试自己的Leetcode链表代码 Java
8-3 递归基础与递归的宏观语意 Java
8-4 链表与递归 Java
8-5 递归运行的机制:递归的微观解读 [无代码]
8-6 递归算法的调试 Java
8-7 作业:链表的递归实现 [无代码]
8-8 [文字] 作业解析:链表的递归实现 Java
8-9 链表添加元素递归方法的常见问题解析 [无代码]
8-10 更多和链表相关的话题 [无代码]
8-11 [文字] 斯坦福大学推荐的 18 个链表相关问题 [无代码]
8-12 斯坦福大学推荐的 18 个链表相关问题 PDF
第八章补充 链表相关习题 (08x-Linked-List/)
8x-1 链表最经典的问题:翻转链表 [无代码]
8x-2 翻转链表的非递归实现 Java
8x-3 翻转链表的递归实现 Java
8x-4 更多链表问题推荐 [无代码]
第九章 二分搜索树 (09-Binary-Search-Tree/)
9-1 为什么要研究树结构 [无代码]
9-2 二分搜索树基础 Java
9-3 向二分搜索树中添加元素 Java
9-4 改进添加操作:深入理解递归终止条件 Java
9-5 二分搜索树的查询操作 Java
9-6 二分搜索树的前序遍历 Java
9-7 二分搜索树的中序遍历和后序遍历 Java
9-8 深入理解二分搜索树的前中后序遍历 [无代码]
9-9 二分搜索树前序遍历的非递归实现 Java
9-10 二分搜索树的层序遍历 Java
9-11 删除二分搜索树的最大元素和最小元素 Java
9-12 删除二分搜索树的任意元素 Java
9-13 更多二分搜索树相关话题 [无代码]
补充代码1: 斯坦福大学Binary Tree相关问题 PDF
[代码TO BE CONTINUED...]
补充代码2: 斯坦福大学Tree List相关问题 PDF
[代码TO BE CONTINUED...]
补充代码3: 二叉树前中后序非递归遍历的经典实现 Java
补充代码4: 模拟系统栈前中后序遍历的非递归实现 玩转算法面试,第六章2,3小节
补充代码5: 二叉树Morris遍历前中后序实现 Java
补充代码6: 二分搜索树其他方法的非递归实现 [TO BE CONTINUED...]
补充代码7: 前驱和后继操作 [TO BE CONTINUED...]
补充代码8: floor和ceil操作 [TO BE CONTINUED...]
补充代码9: 节点内维护size的二分搜索树 [TO BE CONTINUED...]
补充代码10: rank和select操作 [TO BE CONTINUED...]
补充代码11: 节点内维护depth的二分搜索树 [TO BE CONTINUED...]
补充代码12: 节点内维护count的二分搜索树
(支持重复元素的二分搜索树)
[TO BE CONTINUED...]
补充代码13: 有重复元素节点的二分搜索树
(另一种支持重复元素的二分搜索树实现)
[TO BE CONTINUED...]
第十章 集合和映射 (10-Set-and-Map/)
10-1 集合基础和基于二分搜索树的集合实现 Java
10-2 基于链表的集合实现 Java
10-3 集合类的复杂度分析 Java
10-4 Leetcode中的集合问题和更多集合相关问题 Java
10-5 映射基础 Java
10-6 基于链表的映射实现 Java
10-7 基于二分搜索树的映射实现 Java
10-8 映射的复杂度分析和更多映射相关问题 Java
10-9 Leetcode上更多集合和映射的问题 Java
补充代码1: 更完整的基于二分搜索树的有序集合 [TO BE CONTINUED...]
补充代码2: 不同底层实现的有序集合对比 [TO BE CONTINUED...]
补充代码3: 更完整的基于二分搜索树的有序映射 [TO BE CONTINUED...]
补充代码4: 不同底层实现的有序映射对比 [TO BE CONTINUED...]
补充代码5: 多重集合 [TO BE CONTINUED...]
补充代码6: 多重映射 [TO BE CONTINUED...]
补充代码7: 基于映射实现的集合 [TO BE CONTINUED...]
第十一章 堆和优先队列 (11-Heap-and-Priority-Queue/)
11-1 什么是优先队列 [无代码]
11-2 堆的基础表示 Java
11-3 向堆中添加元素和Sift Up Java
11-4 从堆中取出元素和Sift Down Java
11-5 Heapify 和 Replace Java
11-6 基于堆的优先队列 Java
11-7 Leetcode上优先队列相关问题 Java
11-8 Java中的PriorityQueue Java
11-9 和堆相关的更多话题和广义队列 [无代码]
补充代码1: 普通线性结构和顺序线性结构实现的优先队列 [TO BE CONTINUED...]
补充代码2: 最小堆 [TO BE CONTINUED...]
补充代码3: 堆排序 [TO BE CONTINUED...]
补充代码4: 索引堆 [TO BE CONTINUED...]
补充代码5: 双向优先队列 [TO BE CONTINUED...]
补充代码6: 多叉堆 [TO BE CONTINUED...]
补充代码7: 二项堆 [TO BE CONTINUED...]
补充代码8: 斐波那契堆 [TO BE CONTINUED...]
补充代码9: 基于事件堆的粒子检测碰撞 [TO BE CONTINUED...]
第十二章 线段树 (12-Segment-Tree/)
12-1 什么是线段树 [无代码]
12-2 线段树基础表示 Java
12-3 创建线段树 Java
12-4 线段树中的区间查询 Java
12-5 Leetcode上线段树相关的问题 Java
12-6 线段树中的更新操作 Java
12-7 更多线段树相关的话题 [无代码]
补充代码1: 使用节点表示的线段树 [TO BE CONTINUED...]
补充代码2: 链式存储的线段树 [TO BE CONTINUED...]
补充代码3: 动态线段树 [TO BE CONTINUED...]
补充代码4: 线段树的懒惰传播 [TO BE CONTINUED...]
补充代码5: 二维线段树 [TO BE CONTINUED...]
补充代码6: 树状数组(Binary Index Tree) [TO BE CONTINUED...]
补充代码7: RMQ问题 [TO BE CONTINUED...]
第十三章 Trie (13-Trie/)
13-1 什么是Trie字典树 [无代码]
13-2 Trie字典树基础 Java
13-3 Trie字典树的查询 Java
13-4 Trie字典树的前缀查询 Java
13-5 Trie字典树和简单的模式匹配 Java
13-6 Trie字典树和字符串映射 Java
13-7 更多和Trie字典树相关的话题 [无代码]
补充代码1: 使用HashMap或者Array的Trie Java
补充代码2: TrieSet和TrieMap [TO BE CONTINUED...]
补充代码3: Trie的递归实现 [TO BE CONTINUED...]
补充代码4: 使用Trie删除元素与 [TO BE CONTINUED...]
补充代码5: 压缩字典树 [TO BE CONTINUED...]
补充代码6: 三分搜索Trie (Ternary Search Trie) [TO BE CONTINUED...]
补充代码7: 子串查询算法 [TO BE CONTINUED...]
补充代码8: 文件压缩算法 [TO BE CONTINUED...]
补充代码9: 模式匹配算法 [TO BE CONTINUED...]
第十四章 并查集 (14-Union-Find/)
14-1 什么是并查集 Java
14-2 Quick Find Java
14-3 Quick Union Java
14-4 基于size的优化 Java
14-5 基于rank的优化 Java
14-6 路径压缩 Java
14-7 更多和并查集相关的话题 Java
第十五章 平衡树和AVL (15-AVL-Tree/)
15-1 平衡树和AVL [无代码]
15-2 计算节点的高度和平衡因子 Java
15-3 检查二分搜索树性质和平衡性 Java
15-4 旋转操作的基本原理 Java
15-5 左旋转和右旋转的实现 Java
15-6 LR 和 RL Java
15-7 从AVL树中删除元素 Java
15-8 基于AVL树的集合和映射 Java
补充代码1: AVL树的优化 [TO BE CONTINUED...]
第十六章 红黑树 [Java] (16-Red-Black-Tree/)
16-1 红黑树与2-3树 [无代码]
16-2 2-3树的绝对平衡性 [无代码]
16-3 红黑树与2-3树的等价性 Java
16-4 红黑树的基本性质和复杂度分析 [无代码]
16-5 保持根节点为黑色和左旋转 Java
16-6 颜色翻转和右旋转 Java
16-7 红黑树中添加新元素 Java
16-8 红黑树的性能测试 Java
16-9 更多红黑树相关的话题 [无代码]
补充代码1: 红黑树中的删除最大元素 [TO BE CONTINUED...]
补充代码2: 红黑树中的删除最小元素 [TO BE CONTINUED...]
补充代码3: 红黑树中的删除任意元素 [TO BE CONTINUED...]
补充代码4: 基于红黑树的集合和映射 [TO BE CONTINUED...]
补充代码5: 右倾红黑树 [TO BE CONTINUED...]
补充代码6: 《算法导论》中红黑树的实现 [TO BE CONTINUED...]
补充代码7: 2-3 树的实现 [TO BE CONTINUED...]
补充代码8: 伸展树 Splay Tree [TO BE CONTINUED...]
第十七章 哈希表 Java
17-1 哈希表基础 Java
17-2 哈希函数 [无代码]
17-3 Java中的hashCode方法 Java
17-4 链地址法 Seperate Chaining [无代码]
17-5 实现属于我们自己的哈希表 Java
17-6 哈希表的动态空间处理与复杂度分析 Java
17-7 哈希表更复杂的动态空间处理方法 Java
17-8 更多哈希冲突的处理方法 [无代码]
补充代码1: 基于哈希表的映射和集合 [TO BE CONTINUED...]
补充代码2: 开放地址法解决哈希冲突 [TO BE CONTINUED...]
第十八章 结语 [无代码]
18-1 更多数据结构和相关练习,大家加油! [无代码]
第十九章 补充章节:B类树 [TO BE CONTINUED...]
------------
------------
第二十章 图的基础 Java
7-1 图论基础 [无代码]
7-2 图的表示 Java
7-3 相邻节点迭代器 Java
7-4 图的算法框架 Java
7-5 深度优先遍历和联通分量 Java
7-6 寻路 Java
7-7 广度优先遍历和无权图的最短路径 Java
7-8 迷宫生成,PS抠图 —— 更多无权图的应用 [无代码]
本章课程最终代码 Java
补充1 Floodfill算法练习题 玩转算法面试
补充2 Floodfill算法可视化 (Java) [整理中]
补充3 扫雷游戏模型 看得见的算法
补充4 随机迷宫生成 看得见的算法
补充5 欧拉路径 [整理中]
补充6 哈密尔顿路径 [整理中]
补充7 Blue Path 自动求解 [整理中]
补充8 地图填色问题 [整理中]
补充9 二分图和二分图的最有匹配 [整理中]
补充10 墙为线条的迷宫生成 [整理中]
补充11 六边形的迷宫生成 [整理中]
补充12 TSP问题 [整理中]
补充13 TSP问题之遗传算法初步 [整理中]
第二十一章 最小生成树 Java
8-1 有权图 [Java] (19-Minimum-Span-Trees/01-Weighted-Graph)
8-2 最小生成树问题和切分定理 [无代码]
8-3 Prim算法的第一个实现 (Lazy Prim) Java
8-4 Prim算法的优化 [无代码]
8-5 优化后的Prim算法的实现 Java
8-6 Kruskal算法 Java
8-7 最小生成树算法的思考 [无代码]
本章课程最终代码 Java
补充1 Prim算法可视化 (Java) [整理中]
补充2 Kruskal算法可视化 (Java) [整理中]
补充3 图的最小生成树的个数 [整理中]
补充4 Vyssotsky Algorithm [整理中]
第二十二章 最短路径 Java
9-1 最短路径问题和松弛操作(Relaxation) [无代码]
9-2 Dijkstra的算法思想 [无代码]
9-3 实现Dijkstra算法 Java
9-4 负权边和Bellman-Ford算法 [无代码]
9-5 实现Bellman-Ford算法 Java
9-6 更多和最短路径相关的思考 [无代码]
本章课程最终代码 Java
补充1 基于最小堆的 Dijkstra 实现
补充2 SPFA算法 [整理中]
补充3 有向无环图(DAG)的拓扑排序 [整理中]
补充4 Floyed算法 [整理中]
补充5 使用Bellman-Ford求最长路径 [整理中]
补充6 使用拓扑排序求有向无环图(DAG)的最长路径 [整理中]
补充7 使用Floyed算法求所有对的最长路径 [整理中]

Releases

No releases published

Packages

No packages published

Languages