Lesson 3链表(Linked List)
- - 链表的基础概念
- - 为什么我们需要链表
- - 链表的基本操作总结
- - 常见操作的常见错误,如何规避常见错误
- - 链表经典习题讲解,再谈快慢指针
- - 1. 合并有序链表
- - 2. 反转链表,及分组反转链表
- - 3. 环形链表及相关习题
Lesson 4栈 (Stack)
- - 栈的基础概念
- - 栈的正确使用方法和使用技巧
- - 栈的最常见题目类型 - 元素的配对
Lesson 5单调栈 (Monotone Stack)
- - 单调栈基础概念
- - 单调栈模板,及其时间复杂度
- - 单调栈基础用法
- - 1. 求前后第一个比其大/小元素
- - 2. 动态维护递增 / 递减区间
- - 3. 求最小递增区间
- - 单调栈相关习题讲解
Lesson 6DFS + 记忆化 (Memo)
- - DFS 基础,由数据范围到 NP 问题
- - DFS 必不可少的部分之一 ---- 回溯
- - 从 DFS 的记忆化到动态规划,通过 DFS 解决动态规划问题。
- - 做 DFS 题目必会的 BitMask 操作,以及 BitMask 在 DFS 中扮演的角色。
- - DFS 相关习题讲解
Lesson 7BitMask
- - BitMask 基础
- - 由 DFS 到 BitMask,二进制数的常用操作复习
- - BitMask 的常用运算,AND OR 以及其用法
- - 最重要的一个运算 XOR,及 XOR 的性质。
- - BitMask 相关习题讲解
Lesson 8队列,图论基础,以及 BFS
- - 队列的基础概念
- - 图论基础
- - 如何使用队列对图进行 BFS 搜索
- - BFS 习题相关习题详解
Lesson 9拓扑排序 (Topological Sort)
- - 拓扑排序的基础概念
- - 如何用 BFS 进行拓扑排序
- - 拓扑排序相关习题详解
Lesson 10优先级队列 → Dijkstra
- - 优先级队列的用法
- - 优先级队列的比较器
- - Dijkstra 的基础详解
- - 用优先级队列实现 Dijkstra
- - Dijkstra 相关题目讲解
Lesson 11并查集 (DSU, Disjoint Set)
- - 并查集基础
- - 并查集的模板以及其四种操作
- 1. 初始化
- 2. Unite
- 3. 寻根
- 4. 撤销
- - 并查集相关题目详解
Lesson 12二叉树 (Binary Tree)
- - 树的基础
- - 树的 DFS 遍历
- 1. 前序遍历
- 2. 中序遍历
- 3. 后序遍历
- 以及其性质的应用
- - 二叉树相关习题详解
Lesson 13字典树 (Trie)
- - 字典树基础
- - 字典树的模板
- - 0/1 字典树基础
- - 字典树的相关题目详解
Lesson 14前缀和 / 差分 (Presum + Diff)
- - 数组前缀和模板
- - 数组前缀和的计算
- - 前缀和数组在题目中的应用
- - 差分数组基础
- - 差分数组题目讲解
Lesson 15动态规划(Dynamic programming)
- - 动态规划基础
- - 一些经典的动态规划问题
- - 动态转移方程的设计
- - 用 DFS 和记忆化来解决动态规划问题