如果你正在准备技术面试,大概率遇到过这种场面:题目读懂了,思路也大概有,但一动笔就卡在边界条件上;或者刷了几十道题,换个问法又认不出来。这门《算法面试通关 40 讲》针对的不是"从零学算法",而是把面试里反复出现的那几类问题拆开,讲清楚它们各自的解题套路和容易踩的坑。

先确认一下你是不是它的目标读者

这门课更适合已经能写基本代码、但算法面试心里没底的人。具体来说,如果你符合下面任意一条,看它的收益会比较直接:

  • 知道数组、链表、二叉树是什么,但被问到"最近公共祖先""滑动窗口最大值"时想不出通解;
  • 动态规划、贪心、二分查找这几个词听着耳熟,真做题时判断不出该用哪个;
  • 刷题靠背答案,题目稍微变形就失效,需要一套能迁移的判断依据;
  • 面试时能说出思路,但复杂度分析说不清楚,或者写出来跑不过边界用例。

如果你连基本的递归、指针操作都还不熟,建议先把语言基础打牢再回来,直接跟这门课会有点吃力。

它把内容分成了"理论"和"面试题"两层

从课程结构能看出一个明显的设计:先讲原理,再上具体题目。理论部分单独成讲,比如数组与链表、贪心算法、二分查找,这些不是泛泛介绍概念,而是把每种结构或方法的适用场景和判定信号讲清楚——什么时候该想到二分,贪心的局部最优在什么条件下才能推到全局最优。面试题部分则挑的是高频且能代表一类思路的题目,比如滑动窗口中的最大值、二叉树与二叉搜索树的最近公共祖先、岛屿的个数与朋友圈这类连通性问题。理论打底、题目落地,两者是配套的,不建议跳着只看题解。

几个值得重点对待的模块

链表与数组

看起来最基础,但面试里翻车率不低。指针操作、边界处理、双指针的移动条件是这里的重点,很多"想得对写不对"的问题都出在这一层。

二叉树与二叉搜索树

最近公共祖先这类题的关键,是区分普通二叉树和二叉搜索树的解法差异。搞清楚"利用了什么性质",比记住某段代码更有用。

贪心与动态规划

这两个是最容易被混淆的。课程单独给了贪心的理论讲解,目的就是让你先能判断"这道题贪心能不能成立",而不是一上来就硬套 DP。判断错了,后面推导全是白费。

二分查找

二分的难点从来不是"有序数组找目标",而是各种变形下的区间开闭和终止条件。这块值得反复看,面试里写错一次基本就凉了。

看完应该能回答的问题

用这几个问题自查,比"看完感觉懂了"靠谱得多:

  • 滑动窗口求最大值,为什么单调队列能保持在 O(n),普通队列不行在哪?
  • 同一道最近公共祖先,普通二叉树和 BST 的解法差在哪一步,BST 的性质省掉了什么?
  • 拿到一道新题,你凭什么判断它该用贪心而不是动态规划?反例怎么构造?
  • 二分查找的循环条件和区间收缩,你能一次写对吗?
  • 连通性问题(岛屿、朋友圈)的本质是什么,为什么可以用并查集或 DFS 两种方式解?

如果这些问题你能不看答案讲清楚,这门课的核心目的就达到了。讲不清楚的,回去对应那几讲重新过一遍,别急着往前赶。

怎么用这份资料

建议按"理论 → 对应面试题 → 自己手写一遍"的顺序走,不要只看视频。算法这东西看懂和写出是两回事,尤其是链表指针、二分边界、递归终止条件这三处最容易以为会了其实不会。每道题看完之后,关掉讲解,自己在编辑器里从空文件开始写,跑通边界用例,再对照讲解看差在哪。40 讲不算多,但每讲都值得配一道自己动手的题,消化比刷量重要。

【极客时间】算法面试通关 40 讲

系统学习算法,轻松应对面试

编辑点评

深入浅出讲解算法原理,结合实战案例,助你快速提升算法能力。

⭐ 编辑推荐

精选40个热门算法面试题,涵盖数据结构、动态规划、贪心算法等多个领域。
系统学习算法原理,掌握解题技巧,轻松应对面试。

课程亮点

• 系统学习算法
• 实战案例丰富
• 轻松应对面试

课程目录

【极客时间】算法面试通关 40 讲必看.png  [493.5 KB]
05丨理论讲解:数组&链表.mp4  [21.3 MB]
12丨面试题:返回滑动窗口中的最大值.mp4  [223.2 MB]
19丨面试题:二叉树&二叉搜索树的最近公共祖先.mp4  [240.5 MB]
24丨理论讲解:贪心算法.mp4  [22.0 MB]
34丨理论讲解:二分查找.mp4  [42.5 MB]
54丨面试题:岛屿的个数&朋友圈(下).mp4  [148.9 MB]
23丨面试题:求众数.mp4  [225.4 MB]
48丨面试题:股票买卖系列.mp4  [961.2 MB]
38丨面试题:二维网格中的单词搜索问题.mp4  [232.5 MB]
59丨FAQ答疑&面试中切题四件套.mp4  [76.7 MB]
29丨面试题:二叉树的最大和最小深度.mp4  [164.7 MB]
08丨面试题:判断括号字符串是否有效.mp4  [166.8 MB]
06丨面试题:反转一个单链表&判断链表是否有环.mp4  [325.5 MB]
33丨面试题:数独问题.mp4  [354.7 MB]
42丨面试题:N皇后问题的另一种解法.mp4  [504.4 MB]
49丨面试题:最长上升子序列.mp4  [499.1 MB]
41丨面试题:2的幂次方问题&比特位计数问题.mp4  [177.4 MB]
36丨理论讲解:字典树.mp4  [57.0 MB]
51丨面试题:编辑距离.mp4  [427.7 MB]
09丨面试题:用队列实现栈&用栈实现队列.mp4  [106.5 MB]
25丨面试题:买卖股票的最佳时机.mp4  [215.4 MB]
03丨如何计算算法的复杂度.mp4  [100.1 MB]
30丨面试题:生成有效括号组合.mp4  [200.0 MB]
17丨理论讲解:树&二叉树&二叉搜索树.mp4  [88.9 MB]
01丨合格程序员的第一步:算法与数据结构.mp4  [316.5 MB]
15丨面试题:两数之和.mp4  [93.8 MB]
14丨面试题:有效的字母异位词.mp4  [137.4 MB]
62丨最后的一些经验分享.mp4  [350.3 MB]
04丨如何通过LeetCode来进行算法题目练习.mp4  [136.2 MB]
35丨面试题:实现一个求解平方根的函数.mp4  [292.5 MB]
11丨面试题:返回数据流中的第K大元素.mp4  [189.9 MB]
32丨面试题:N皇后问题.mp4  [309.4 MB]
55丨理论讲解: LRU Cache.mp4  [164.7 MB]
28丨面试题:二叉树层次遍历.mp4  [220.1 MB]
56丨面试题:设计和实现一个LRU Cache缓存机制.mp4  [61.2 MB]
37丨面试题:实现一个字典树.mp4  [62.3 MB]
47丨面试题:乘积最大子序列.mp4  [435.2 MB]
22丨面试题:Pow(x,n).mp4  [159.3 MB]
02丨如何事半功倍地学习算法与数据结构.mp4  [229.4 MB]
57丨理论讲解:布隆过滤器.mp4  [102.4 MB]
18丨面试题:验证二叉搜索树.mp4  [192.5 MB]
52丨理论讲解:并查集.mp4  [124.3 MB]
61丨白板实战番外篇:斐波拉契数列.mp4  [156.2 MB]
39丨理论讲解:位运算.mp4  [53.5 MB]
20丨理论讲解:二叉树遍历.mp4  [36.9 MB]
60丨回到起点:斐波拉契数列.mp4  [210.2 MB]
07丨理论讲解:堆栈&队列.mp4  [27.3 MB]
45丨面试题:爬楼梯.mp4  [247.2 MB]
27丨理论讲解:深度优先搜索.mp4  [53.0 MB]
53丨面试题:岛屿的个数&朋友圈(上).mp4  [358.4 MB]
13丨理论讲解:哈希表.mp4  [77.9 MB]
26丨理论讲解:广度优先搜索.mp4  [41.2 MB]
40丨面试题:统计位1的个数.mp4  [150.7 MB]
58丨课程重点回顾.mp4  [106.4 MB]
50丨面试题:零钱兑换.mp4  [210.0 MB]
44丨理论理解:动态规划(下).mp4  [149.1 MB]
46丨面试题:三角形的最小路径和.mp4  [349.6 MB]
21丨理论讲解:递归&分治.mp4  [69.9 MB]
10丨理论讲解:优先队列.mp4  [58.5 MB]
16丨面试题:三数之和.mp4  [196.4 MB]
43丨理论理解:动态规划(上).mp4  [63.7 MB]
31丨理论讲解:剪枝.mp4  [205.1 MB]

适合人群

  • 算法初学者
  • 面试求职者
  • 算法爱好者

学习收获

掌握算法原理
提升解题技巧
轻松应对面试

祝您学习愉快!

学有所成,前程似锦!