九章算法班 2021 版


第一章【直播】资深面试官揭秘算法面试速成技巧 - 怎样做到 Bug Free 和刷100题等于别人刷300题

免费试听

如何在算法面试中正确的沟通?

a.如何确定自己的算法是正确的?


b.如何套出面试官要求的时间复杂度?


c.如何知道自己Hire or No Hire?


如何让面试官在面试中感觉你很牛逼?

a.为什么Coding Style很重要


b.什么是Good Coding Style,什么是Bad Coding Style


如何修炼Bug Free的能力

a.一个技巧教你避免99%的Bug


b.出现Bug以后如何快速Debug


如何做到刷100题顶过别人刷300题

a.算法面试精选100题2021版(免费福利)


2021算法面试考察范围与频率一览

2021新版课程特色一览

第二章【视频】FB面试官揭秘算法面试速成技巧 - 怎样做到 Bug Free 和刷100题等于别人刷300题

11月13日10:15 - 12月13日10:15

1.如何在算法面试中正确的沟通?


a.如何确定自己的算法是正确的?


b.如何套出面试官要求的时间复杂度?


c.如何知道自己Hire or No Hire?


2.如何让面试官在面试中感觉你很牛逼?


a.为什么Coding Style很重要


b.什么是Good Coding Style,什么是Bad Coding Style


3.如何修炼Bug Free的能力


a.一个技巧教你避免99%的Bug


b.出现Bug以后如何快速Debug


4.如何做到刷100题顶过别人刷300题


a.算法面试精选100题2021版(免费福利)


5.2021算法面试考察范围与频率一览


6.2021新版课程特色一览


第三章【互动】真实面试案例分析(上)与面试评分标准

免费试听

最长回文子串Longest Palindromic Substring

a.为什么不需要学Manacher's Algorithm


b.基于双指针的算法与背向双指针算法简介


c.有哪些Bad Coding Style容易踩,面试真实案例分析


d.基于动态规划的算法与区间型动态规划简介


面试评分标准

快速提高Coding Quality的十二个技巧

第四章【互动】真实面试案例分析(下)与80%求职者会踩坑的基础知识

免费试听

字符串查找strStr

a.为什么不需要学KMP算法


b.Rabin-karp算法与哈希函数Hash Function


为什么我们不需要学习贪心法

三个你必须知道的语言知识

a.如何判断两个字符串是否相等


b.如何遍历字符串


c.null和""有什么区别


十个你必须掌握的字符串处理函数

第五章【互动】复杂度理论与双指针算法入门

11月13日10:15 - 11月27日10:15

四个算法的复杂度维度

a.时间复杂度


b.空间复杂度


c.编程复杂度


d.思维复杂度


时间复杂度是O(N)的算法有哪些

三种双指针题型

a.背向双指针


b.同向双指针


c.相向双指针


Valid Palindrome && II

Two Sum型双指针经典题

a.哈希表的做法


b.排序+双指针的做法


c.哈希表与双指针的比较


第六章【互动】必须熟练掌握的两个排序算法

11月13日10:15 - 11月27日10:15

两个必须熟练掌握的排序算法

a.快速排序算法


b.归并排序算法


Quick Select快速选择算法

第七章【互动】时间复杂度为O(logN)的高频算法——二分法

11月13日10:15 - 11月27日10:15

时间复杂度的分析技巧——T函数推导法

通过时间复杂度倒推算法的技巧

递归是什么,如何实现二分

什么是堆空间(Heap Memory),什么是栈空间(Stack Memory)

什么是Stack Overflow,如何造成的,如何避免

第八章【互动】一个不会出现死循环的通用二分法模板

11月13日10:15 - 11月27日10:15

二分法的基本原理

通用模板

a.什么时候死循环


b.为什么能做到通用


使用二分法解决求第一个位置,求最后一个位置和求任意位置的二分问题

二分算法的判断条件

第九章【直播】高频算法之王——双指针算法之相向双指针

11月21日10:15 - 12:45

两数之和的十种变形题

a.数据结构设计


b.不同的二元组个数


c.两数之和小于等于


d.两数之和大于等于


e.三角形个数


f.两数之和最接近


g.三数之和


h.三数之和最接近


i.四数之和


j.K数之和


时间复杂度与循环层数的关系

Partition型相向双指针

a.2-Part-Partitionvs3-Part-Partition


b.彩虹排序算法


c.通过移0的问题看相向双指针与同向双指针的区别

第十章【直播】简约而不简单——二分法学习的四重境界

11月22日10:15 - 12:45

第一重境界写出不会死循环二分法

第二重境界在排序的输入集上进行二分

第三重境界在未排序输入集上进行二分

第四重境界在结果集上进行二分

第十一章【视频】高频算法之王——双指针算法之相向双指针

11月22日10:15 - 11月29日10:15

两数之和的十种变形题

a.数据结构设计


b.不同的二元组个数


c.两数之和小于等于


d.两数之和大于等于


e.三角形个数


f.两数之和最接近


g.三数之和


h.三数之和最接近


i.四数之和


j.K数之和


时间复杂度与循环层数的关系

Partition型相向双指针

a.2-Part-Partitionvs3-Part-Partition


b.彩虹排序算法


c.通过移0的问题看相向双指针与同向双指针的区别


第十二章【视频】简约而不简单——二分法学习的四重境界

11月22日10:15 - 11月29日10:15

第一重境界写出不会死循环二分法

第二重境界在排序的输入集上进行二分

第三重境界在未排序输入集上进行二分

第四重境界在结果集上进行二分

第十三章【互动】队列知识点从易到难

11月22日10:15 - 12月6日10:15

队列及相关面试题

Java中的Interface是什么

链表和数组实现队列的区别

循环队列的实现方法

第十四章【互动】宽度优先搜索与图论入门

11月22日10:15 - 12月6日10:15

宽度优先搜索的适用场景

宽度优先搜索的三种实现方法

a.两个队列的实现方法


b.DummyNode的实现方法


c.一个队列的实现方法


无向图和有向图的存储方法

第十五章【互动】用递归实现遍历法和分治法

11月22日10:15 - 12月6日10:15

递归Recursion,深搜DFS,回溯Backtracking的联系和区别

递归三要素是什么

通过二叉树学习DFS中的遍历法

什么是分治法,遍历法和分治法的区别

a.通过两道实战真题理解分治法和遍历法的区别


第十六章【互动】使用非递归实现二叉树的遍历

11月22日10:15 - 12月6日10:15

非递归版本的二叉树中序遍历

a.BST是什么


b.BST Iterator的两种实现方法


第十七章【直播】性价比之王——宽度优先搜索

11月28日10:15 - 12:45

连通块问题

a.DFS vs BFS在连通块问题上的优劣


b.劝分不劝合的编码理论


图的层级遍历与简单图最短路径问题

a.什么是简单图


b.复杂度最短路径有什么算法


c.最长路径用什么算法


d.什么是隐式图


e.通用的BFS模板


f.80%的人都会写错的BFS写法


拓扑排序

a.DFS vs BFS在拓扑排序上的优劣


b.拓扑排序的五个考点


i.问有没有拓扑排序


ii.求任意一个拓扑排序


iii.求最小的拓扑排序


iv.求拓扑排序是否唯一


第十八章【直播】解决99%二叉树问题的算法——分治法

11月29日10:15 - 12:45

用分治法解决二叉树求值求路径的问题

a.理解什么是搜索中的回溯


用分治法解决二叉树形态变换的问题

a.全局变量在代码中的危害

第十九章【视频】性价比之王——宽度优先搜索

11月28日10:15 - 12月5日10:15

连通块问题

a.DFS vs BFS在连通块问题上的优劣


b.劝分不劝合的编码理论


图的层级遍历与简单图最短路径问题

a.什么是简单图


b.复杂度最短路径有什么算法


c.最长路径用什么算法


d.什么是隐式图


e.通用的BFS模板


f.80%的人都会写错的BFS写法


拓扑排序

a.DFS vs BFS在拓扑排序上的优劣


b.拓扑排序的五个考点


i.问有没有拓扑排序


ii.求任意一个拓扑排序


iii.求最小的拓扑排序


iv.求拓扑排序是否唯一


第二十章【视频】解决99%二叉树问题的算法——分治法

11月29日10:15 - 12月6日10:15

用分治法解决二叉树求值求路径的问题

a.理解什么是搜索中的回溯


用分治法解决二叉树形态变换的问题

a.全局变量在代码中的危害


第二十一章【互动】组合类DFS

11月28日10:15 - 12月12日10:15

组合类搜索的隐式图模型

组合类搜索的时间复杂度和适用条件

如何对搜索结果进行去重

a.选代表vs哈希表


第二十二章【互动】排列类DFS

11月28日10:15 - 12月12日10:15

排列类搜索的隐式图模型

排列类搜索的时间复杂度和适用条件

通过排列类搜索看搜索与多重循环的区别

著名的NP问题:TSP问题(旅行商问题)

a.DFS的解法


b.状态压缩型动态规划


c.随机化算法


第二十三章【互动】哈希表的原理

11月28日10:15 - 12月12日10:15

HashMap和HashSet的联系和区别

哈希表Hash Table的基本原理

什么是哈希函数Hash Function

如何解决冲突Collision

a.开散列Open Hash vs 闭散列Closed Hash


哈希表扩容问题

第二十四章【互动】堆的基本原理

11月28日10:15 - 12月12日10:15

Priority Queue和堆的联系和区别

堆的基本原理

堆的基本操作Sift Up和Sift Down

堆的增删查改

堆的初始化Heapify

堆排序

第二十五章【直播】刷人利器——深度优先搜索

12月5日10:15 - 12:45

排列组合类搜索

a.两种组合类DFS的实现方法


b.使用组合类DFS算法解决K数之和问题


c.DFS的框架模板


矩阵上的DFS

如何解决求所有最短路线的问题

第二十六章【直播】高频数据结构——哈希表与堆

12月6日10:15 - 12:45

数据结构设计题的考点

数据结构设计题的时间复杂度计算方式

在线算法vs离线算法

堆Heap的实战真题

高级数据结构的Cheat Sheet

第二十七章【视频】刷人利器——深度优先搜索

12月5日10:15 - 12月12日10:15

排列组合类搜索

a.两种组合类DFS的实现方法


b.使用组合类DFS算法解决K数之和问题


c.DFS的框架模板


矩阵上的DFS

如何解决求所有最短路线的问题

第二十八章【视频】高频数据结构——哈希表与堆

12月6日10:15 - 12月13日10:15

数据结构设计题的考点

数据结构设计题的时间复杂度计算方式

在线算法vs离线算法

堆Heap的实战真题

高级数据结构的Cheat Sheet

第二十九章【互动】从搜索到动规——记忆化搜索入门

12月5日10:15 - 12月19日10:15

什么时候可以使用记忆化搜索

DFS和记忆化搜索的区别

如何用三行代码让DFS变成记忆化搜索

用记忆化搜索解决博弈型动态规划

记忆化搜索的缺陷

第三十章【互动】动态规划入门与动规四要素

12月5日10:15 - 12月19日10:15

动态规划DP与记忆化搜索的关系

多重循环与记忆化搜索实现动态规划的区别

什么时候使用动态规划

a.动态规划四要素是什么


自底向上的动态规划

自顶向下的动态规划

第三十一章【互动】动态规划使用场景与题型分类

12月5日10:15 - 12月19日10:15

动态规划算法的使用场景

动态规划题型一览

坐标型动态规划

第三十二章【互动】背包型动态规划入门

12月5日10:15 - 12月19日10:15

01背包

带价值的背包

多重背包

第三十三章【直播】让面试官眼前一亮——记忆化搜索

12月12日10:15 - 12:45

三种适用动态规划的场景

三种不适用动态规划的场景

用记忆化搜索解决字符串相关的DP问题

第三十四章【直播】最难的算法——动态规划

12月13日10:15 - 12:45

动态规划的解题步骤

动态规划的空间优化技巧——滚动数组

坐标型动态规划的分支——接龙型动态规划

通过经典DP题LIS看动态规划如何记录具体方案

上下左右都可以走的矩阵如何进行动态规划

第三十五章【视频】让面试官眼前一亮——记忆化搜索

12月12日10:15 - 12月19日10:15

三种适用动态规划的场景

三种不适用动态规划的场景

用记忆化搜索解决字符串相关的DP问题

第三十六章【视频】最难的算法——动态规划

12月13日10:15 - 12月20日10:15

动态规划的解题步骤

动态规划的空间优化技巧——滚动数组

坐标型动态规划的分支——接龙型动态规划

通过经典DP题LIS看动态规划如何记录具体方案

上下左右都可以走的矩阵如何进行动态规划

第三十七章【互动】双指针算法之同向双指针(上)

12月12日10:15 - 12月26日10:15

Two Sum的第十一种变形题——两数之差

全零子串问题

数组去重问题

第三十八章【互动】双指针算法之同向双指针(下)

12月12日10:15 - 12月26日10:15

数组和字符串上的同向双指针

a.滑动窗口求和


b.K次替换后最长的重复字符子串


快慢指针算法

a.链表求交、链表求环


b.链表中位点


第三十九章【互动】二分法实战练习

12月12日10:15 - 12月26日10:15

排序输入集:排序矩阵找数问题

未排序输入集:最小的包含所有连通01块的矩阵

结果集二分:抄书问题

第四十章【互动】时间复杂度低于O(N)的算法

12月12日10:15 - 12月26日10:15

比O(N)小的算法 -O(LogN)

a.快速幂算法


b.辗转相除法


c.两个排序数组的中位数


O(√N)的算法

a.分解质因数


b.分块检索法


第四十一章【互动】使用宽度优先搜索找所有方案

12月12日10:15 - 12月26日10:15

使用BFS求所有方案类问题

使用BFS序列化二叉树

a.什么是序列化与反序列化


第四十二章【互动】双向宽度优先搜索算法

12月12日10:15 - 12月26日10:15

双向宽度优先搜索算法

a.双向宽度优先搜索到底优化了多少


b.如何优雅的实现双向宽度优先搜索


第四十三章【互动】后序遍历非递归与Morris算法

12月12日10:15 - 12月26日10:15

非递归实现后序遍历

Morris算法

第四十四章【互动】二叉查找树的增删查改

12月19日10:15 - 1月2日10:15

BST 的增删查改

第四十五章【互动】非递归的方式实现排列和组合类DFS

12月19日10:15 - 1月2日10:15

使用求下一个排列的算法实现非递归

更通用的非递归实现方法

第四十六章【互动】DFS经典题精讲

12月19日10:15 - 1月2日10:15

N皇后问题及程序结构的艺术

数独及搜索顺序的优化算法

第四十七章【互动】数据结构设计类问题

12月19日10:15 - 1月2日10:15

最小栈

最大栈

两个栈实现队列

两个队列实现栈

第四十八章【互动】外排序算法与数组合并类问题

12月19日10:15 - 1月2日10:15

外排序

三种K路归并算法

数组合并的相关问题

第四十九章【互动】区间型动态规划入门

12月19日10:15 - 1月2日10:15

区间型动态规划的题目特点

区间型动态规划的循环方式

三个例题入门区间动态规划

第五十章【互动】匹配型动态规划入门

12月26日10:15 - 1月9日10:15

匹配型动态规划的题目特点

匹配型动态规划的代码实现

三个例题入门匹配型动规

第五十一章【互动】划分型动态规划入门

12月26日10:15 - 1月9日10:15

划分型动态规划的题目特点

划分型动态规划的代码实现

三个例题入门划分型动规

第五十二章【互动】接龙型动态规划的二分解法

12月26日10:15 - 1月9日10:15

接龙型动态规划的题目特点

接龙型动态规划的代码实现

最长上升子序列(LIS)的二分解法

三个例题吃透接龙型动态规划

本文隐藏内容 登录 后才可以浏览

资源失效、缺失、错误 不要慌


生活不止苟且,还有我喜爱的海岸.