国内 IOS 第一人 MJ 大神的数据结构与算法课全套:
课程目录:
01 学前须知
【录播】01-为什么要学习数据结构与算法 (11分钟)
【录播】02-编程语言的选择 (3分钟)
【录播】03-课程大纲 (5分钟)
【录播】04-注意事项 (4分钟)
【录播】05-课程的选择 (6分钟)
02 复杂度
【录播】01-开发环境搭建 (18分钟)
【录播】02-斐波那契数 (17分钟)
【录播】03-算法的评估 (7分钟)
【录播】04-时间复杂度的估算 (12分钟)
【录播】05-大O表示法 (16分钟)
【录播】06-斐波那契数复杂度分析 (12分钟)
【录播】07-leetcode (13分钟)
03 动态数组-01
【录播】01-线性表 (5分钟)
【录播】02-接口设计 (11分钟)
【录播】03-简单接口的实现 (15分钟)
【录播】04-clear (14分钟)
【录播】05-补充 (16分钟)
【录播】06-add (5分钟)
【录播】07-打印 (6分钟)
【录播】08-remove (9分钟)
【录播】09-add_index (11分钟)
【录播】10-接口测试 (5分钟)
04 动态数组-02
【录播】11-动态扩容 (16分钟)
【录播】12-泛型 (13分钟)
【录播】13-对象数组 (10分钟)
【录播】14-clear细节 (16分钟)
【录播】15-remove细节 (4分钟)
【录播】16-equals (8分钟)
【录播】17-null值处理 (9分钟)
【录播】18-ArrayList源码分析 (9分钟)
【录播】19-答疑 (7分钟)
【录播】20-补充 (19分钟)
05 链表-01
【录播】01-简介 (9分钟)
【录播】02-接口设计 (17分钟)
【录播】03-clear (3分钟)
【录播】04-add (16分钟)
【录播】05-remove (5分钟)
【录播】06-indexOf_toString (5分钟)
【录播】07-练习01-删除节点 (11分钟)
【录播】08-练习02-反转链表01-递归 (14分钟)
【录播】09-练习02-反转链表02-迭代 (9分钟)
【录播】10-练习03-环形链表 (14分钟)
06 链表-02
【录播】11-答疑 (8分钟)
【录播】12-补充 (11分钟)
【录播】13-虚拟头结点 (12分钟)
【录播】14-复杂度分析01-ArrayList (18分钟)
【录播】15-复杂度分析02-LinkedList (10分钟)
【录播】16-均摊复杂度 (8分钟)
【录播】17-ArrayList的缩容 (15分钟)
【录播】18-复杂度震荡 (8分钟)
【录播】19-双向链表01-简介 (11分钟)
【录播】20-双向链表02-clear (8分钟)
07 链表-03
【录播】21-双向链表03-add (23分钟)
【录播】22-双向链表04-remove (7分钟)
【录播】23-双向链表05-接口测试 (10分钟)
【录播】24-双向链表06-总结 (9分钟)
【录播】25-双向链表07-源码分析 (13分钟)
【录播】26-单向循环链表01-add (6分钟)
【录播】27-单向循环链表02-remove (6分钟)
【录播】28-单向循环链表03-接口测试_修复BUG (13分钟)
【录播】29-双向循环链表01-add (11分钟)
【录播】30-双向循环链表02-remove (6分钟)
08 链表-04
【录播】31-双向循环链表03-练习-约瑟夫问题 (21分钟)
【录播】32-静态链表 (4分钟)
【录播】33-ArrayList的优化思路 (10分钟)
09 栈
【录播】01-设计和实现 (16分钟)
【录播】02-应用举例 (8分钟)
【录播】03-练习-有效的括号01 (14分钟)
【录播】04-练习-有效的括号02 (9分钟)
【录播】05-练习-有效的括号03 (7分钟)
【录播】06-补充 (4分钟)
10 队列-01
【录播】01-设计和实现 (10分钟)
【录播】02-练习-用栈实现队列 (13分钟)
【录播】03-Queue源码分析 (3分钟)
【录播】04-双端队列Deque源码分析 (7分钟)
【录播】05-循环队列01-实现 (19分钟)
【录播】06-循环队列02-测试动态扩容 (13分钟)
【录播】07-循环队列03-索引映射封装 (4分钟)
【录播】08-循环双端队列01-实现 (15分钟)
【录播】09-循环双端队列02-测试 (11分钟)
【录播】10-循环双端队列03-模运算优化 (18分钟)
11 队列-02
【录播】11-clear (4分钟)
12 二叉树
【录播】01-树 (11分钟)
【录播】02-二叉树及其性质 (9分钟)
【录播】03-真二叉树_满二叉树 (5分钟)
【录播】04-完全二叉树01-概念 (4分钟)
【录播】05-完全二叉树02-性质01 (12分钟)
【录播】06-完全二叉树03-性质02. (4分钟)
【录播】07-完全二叉树04-面试题 (6分钟)
【录播】08-完全二叉树05-公式总结 (11分钟)
【录播】09-国外教材 (2分钟)
13 二叉搜索树-01
【录播】01-需求分析 (7分钟)
【录播】02-概念_接口设计 (7分钟)
【录播】03-add01-根节点 (8分钟)
【录播】04-add02-思路 (6分钟)
【录播】05-add03-实现 (10分钟)
【录播】06-compare01-comparable (9分钟)
【录播】07-compare02-comparator (8分钟)
【录播】08-compare03-完美结合 (11分钟)
【录播】09-compare04-匿名类 (5分钟)
【录播】10-打印器01-使用 (5分钟)
14 二叉搜索树-02
【录播】11-打印器02-Person (8分钟)
【录播】12-打印器03-更多用法 (7分钟)
【录播】13-打印器04-文件_建议 (11分钟)
【录播】14-网站推荐 (5分钟)
【录播】15-值相等的处理 (7分钟)
【录播】16-前序遍历 (12分钟)
【录播】17-中序遍历 (7分钟)
【录播】18-后序遍历 (4分钟)
【录播】19-层序遍历 (10分钟)
【录播】20-设计遍历接口 (11分钟)
15 二叉搜索树-03
【录播】21-增强遍历接口01 (9分钟)
【录播】22-增强遍历接口02 (15分钟)
【录播】23-树状打印二叉树 (9分钟)
【录播】24-练习01-计算二叉树的高度 (14分钟)
【录播】25-练习02-完全二叉树的判断01 (15分钟)
【录播】26-练习02-完全二叉树的判断02 (15分钟)
【录播】27-练习03-翻转二叉树 (14分钟)
【录播】28-重构二叉树 (17分钟)
【录播】29-前驱节点 (19分钟)
【录播】30-后继节点 (13分钟)
16 二叉搜索树-04
【录播】31-remove01-度为01的节点 (8分钟)
【录播】32-remove02-度为2的节点 (14分钟)
【录播】33-remove03-实现 (22分钟)
【录播】34-测试_完善接口 (8分钟)
【录播】35-代码重构 (10分钟)
【录播】36-答疑 (3分钟)
【录播】37-补充 (2分钟)
17 AVL树-01
【录播】01-二叉搜索树复杂度分析 (8分钟)
【录播】02-平衡二叉搜索树 (8分钟)
【录播】03-基本概念 (9分钟)
【录播】04-添加导致的失衡 (6分钟)
【录播】05-旋转01-LL_RR (16分钟)
【录播】06-旋转02-LR_RL (5分钟)
【录播】07-旋转03-总结 (5分钟)
【录播】08-afterAdd (9分钟)
【录播】09-计算平衡因子 (10分钟)
【录播】10-更新高度 (8分钟)
18 AVL树-02
【录播】11-恢复平衡 (8分钟)
【录播】12-旋转方向的判断 (9分钟)
【录播】13-补充 (8分钟)
【录播】14-左旋转的实现 (13分钟)
【录播】15-右旋转的实现 (9分钟)
【录播】16-示例 (4分钟)
【录播】17-统一旋转操作01 (14分钟)
【录播】18-统一旋转操作02 (8分钟)
【录播】19-删除导致的失衡 (5分钟)
【录播】20-删除后的平衡方案 (6分钟)
19 AVL树-03
【录播】21-afterRemove (14分钟)
【录播】22-总结 (7分钟)
【录播】23-补充 (9分钟)
20 B树
【录播】01-初识红黑树 (9分钟)
【录播】02-初识B树 (6分钟)
【录播】03-性质 (11分钟)
【录播】04-B树_二叉搜索树 (6分钟)
【录播】05-添加 (7分钟)
【录播】06-上溢的解决 (7分钟)
【录播】07-删除 (5分钟)
【录播】08-下溢的解决 (12分钟)
【录播】09-4阶B树 (5分钟)
【录播】10-补充 (13分钟)
21 红黑树-01
【录播】01-错误示范 (7分钟)
【录播】02-与4阶B树的等价变换 (7分钟)
【录播】03-辅助函数 (12分钟)
【录播】04-添加01 (5分钟)
【录播】05-添加02-情况分析 (6分钟)
【录播】06-添加03-黑叔01-LL_RR (10分钟)
【录播】07-添加04-黑叔02-LR_RL (3分钟)
【录播】08-添加05-red_uncle (13分钟)
【录播】09-添加06-情况总结 (4分钟)
【录播】10-添加07-实现01-red_uncle (6分钟)
22 红黑树-02
【录播】11-添加08-实现02-black_uncle (13分钟)
【录播】12-添加09-测试 (11分钟)
【录播】13-添加10-补充 (6分钟)
【录播】14-删除01-情况分析 (5分钟)
【录播】15-删除02-红替01-分析 (6分钟)
【录播】16-删除03-红替02-实现 (9分钟)
【录播】17-删除04-黑叶01-根节点 (5分钟)
【录播】18-删除05-黑叶02-黑兄01 (15分钟)
【录播】19-删除06-黑叶03-黑兄02 (11分钟)
【录播】20-删除07-黑叶04-红兄 (8分钟)
23 红黑树-03
【录播】21-删除08-总结 (7分钟)
【录播】22-删除09-黑叶05-实现01 (15分钟)
【录播】23-删除10-黑叶06-实现02 (17分钟)
【录播】24-删除11-黑叶07-对称处理 (7分钟)
【录播】25-删除12-测试 (7分钟)
【录播】26-删除13-去除replacement参数 (18分钟)
【录播】27-答疑 (7分钟)
【录播】28-总结 (19分钟)
【录播】29-平衡 (9分钟)
【录播】30-性能对比 (16分钟)
24 集合
【录播】01-简介 (4分钟)
【录播】02-ListSet (13分钟)
【录播】03-TreeSet (9分钟)
【录播】04-复杂度分析 (4分钟)
【录播】05-性能对比 (12分钟)
【录播】06-TreeSet的局限性 (4分钟)
25 映射-01
【录播】01-简介01-简介 (6分钟)
【录播】02-Node (8分钟)
【录播】03-put (10分钟)
【录播】04-get_remove (6分钟)
【录播】05-contains (7分钟)
【录播】06-traversal (4分钟)
【录播】07-测试 (8分钟)
【录播】08-利用TreeMap实现TreeSet (9分钟)
【录播】09-TreeMap_TreeSet源码分析 (12分钟)
【录播】10-补充 (5分钟)
26 映射-01
【录播】11-代码量与性能 (15分钟)
27 哈希表-01
【录播】01-TreeMap复杂度分析 (9分钟)
【录播】02-初识哈希表 (5分钟)
【录播】03-哈希冲突 (4分钟)
【录播】04-JDK8的哈希冲突解决 (8分钟)
【录播】05-哈希函数 (13分钟)
【录播】06-哈希值计算01-int_float (9分钟)
【录播】07-哈希值计算02-long_double (11分钟)
【录播】08-哈希值计算03-字符串01 (9分钟)
【录播】09-哈希值计算04-字符串02 (7分钟)
【录播】10-哈希值计算05-总结 (6分钟)
28 哈希表-02
【录播】11-哈希值计算06-自定义对象 (15分钟)
【录播】12-equals (15分钟)
【录播】13-同时实现hashCode_equals (8分钟)
【录播】14-不实现hashCode_equals (5分钟)
【录播】15-只实现equals (4分钟)
【录播】16-只实现hashCode (5分钟)
【录播】17-答疑 (10分钟)
【录播】18-补充 (11分钟)
【录播】19-clear (13分钟)
【录播】20-put (10分钟)
29 哈希表-03
【录播】21-compare01-基本处理 (15分钟)
【录播】22-compare02-其他情况 (6分钟)
【录播】23-compare03-分析测试 (12分钟)
【录播】24-get_containsKey (8分钟)
【录播】25-remove (4分钟)
【录播】26-containsValue_traversal (8分钟)
【录播】27-发现问题 (8分钟)
【录播】28-打印红黑树 (10分钟)
【录播】29-分析问题 (13分钟)
【录播】30-回顾问题 (12分钟)
30 哈希表-04
【录播】31-重写node01 (9分钟)
【录播】32-重写node02 (12分钟)
【录播】33-重写put01 (11分钟)
【录播】34-重写put02 (9分钟)
【录播】35-put优化 (11分钟)
【录播】36-node优化 (6分钟)
【录播】37-compareTo调整 (19分钟)
【录播】38-测试用例01 (9分钟)
【录播】39-测试用例02 (11分钟)
【录播】40-HashMap源码预览 (6分钟)
31 哈希表-05
【录播】41-测试用例03 (6分钟)
【录播】42-bug修复 (9分钟)
【录播】43-代码演化01-简化put和node (11分钟)
【录播】44-代码演化02-完善优化put和node (10分钟)
【录播】45-代码演化03-增加comparable (7分钟)
【录播】46-代码演化04-最后的比较策略 (7分钟)
【录播】47-node的hash值调整 (7分钟)
【录播】48-扩容01-装填因子 (8分钟)
【录播】49-扩容02-思路 (15分钟)
【录播】50-扩容03-实现 (13分钟)
32 哈希表-06
【录播】51-扩容04-测试 (6分钟)
【录播】52-equals的规范 (13分钟)
【录播】53-TreeMapHashMap (14分钟)
【录播】54-取模运算素数 (6分钟)
【录播】55-答疑 (5分钟)
【录播】56-LinkedHashMap01-创建节点 (11分钟)
【录播】57-LinkedHashMap02-串线 (7分钟)
【录播】58-LinkedHashMap03-删除节点 (9分钟)
【录播】59-LinkedHashMap04-删除的bug (14分钟)
【录播】60-LinkedHashMap05-修复bug (12分钟)
33 哈希表-07
【录播】61-HashSet_LinkedHashSet (6分钟)
【录播】62-答疑 (3分钟)
【录播】63-LinkedHashMap_HM源码分析 (14分钟)
34 二叉堆-01
【录播】01-需求分析 (7分钟)
【录播】02-堆 (6分钟)
【录播】03-二叉堆 (6分钟)
【录播】04-基本接口实现 (6分钟)
【录播】05-add01-思路 (9分钟)
【录播】06-add02-实现 (7分钟)
【录播】07-打印调试 (5分钟)
【录播】08-优化 (8分钟)
【录播】09-抽取父类 (5分钟)
【录播】10-remove01-思路 (11分钟)
35 二叉堆-02
【录播】11-remove02-实现 (18分钟)
【录播】12-replace (6分钟)
【录播】13-heapify01-自上而下的上滤 (8分钟)
【录播】14-heapify02-自下而上的下滤 (12分钟)
【录播】15-heapify03-效率对比 (7分钟)
【录播】16-heapify04-复杂度计算 (14分钟)
【录播】17-heapify05-答疑 (6分钟)
【录播】18-heapify06-实现 (13分钟)
【录播】19-小顶堆 (14分钟)
【录播】20-TopK面试题 (16分钟)
36 优先级队列
【录播】01-实现 (16分钟)
【录播】02-PriorityQueue源码分析 (7分钟)
37 哈夫曼树
【录播】01-需求分析 (10分钟)
【录播】02-构建哈夫曼树 (7分钟)
【录播】03-构建哈夫曼编码 (11分钟)
38 Trie
【录播】01-简介 (9分钟)
【录播】02-接口设计 (7分钟)
【录播】03-Node设计 (15分钟)
【录播】04-clear_get_contains (11分钟)
【录播】05-add (12分钟)
【录播】06-startsWith (8分钟)
【录播】07-代码调整 (12分钟)
【录播】08-remove (13分钟)
【录播】09-总结_bug修复 (8分钟)
39 补充
【录播】01-总结 (7分钟)
【录播】02-zigzag满二叉树完全二叉树 (5分钟)
【录播】03-四则运算表达式树 (8分钟)
【录播】04-非递归前序遍历01-思路 (14分钟)
【录播】05-非递归前序遍历02-实现 (9分钟)
【录播】06-非递归中序遍历 (11分钟)
【录播】07-非递归后序遍历01 (11分钟)
【录播】08-非递归后序遍历02 (11分钟)
【录播】09-非递归前序遍历的另一种思路 (6分钟)
【录播】10-答疑 (10分钟)