




资源介绍
视频数量:78个
总时长:3小时36分
课程介绍:
编程面试算法与数据结构实战训练
面试官把一段需求写在白板上:给定一串股票价格,怎样找到最大收益;换成链表、树或地图,题目一变,很多人的思路就断了。真正让人卡住的,往往不是Python语法记不熟,而是不会把文字需求翻译成数据结构,选对方法,并解释为什么它高效。课程用七十八个视频、三小时三十六分钟,围绕七十多道真实面试题展开,把读题、确认输入输出、先写朴素方案、逐步优化、检查边界、解释时间和空间复杂度串成一套完整的解题习惯。
一、数组与字符串基础:
从反转字符串、找最大值和第二大值、找缺失数字开始,练习遍历、比较、索引和边界判断;再处理列表去重、字符频次、首个不重复字符、易位构词以及两个列表的共同元素。买卖股票题会把这些基础串起来,只需记住历史最低价,就能一次扫描得到最大利润。共同元素题则说明集合如何让成员判断更省时。空输入、重复项、顺序和数值范围都会被纳入思考,避免代码只对样例有效。
二、哈希表、集合与频次模式:
分组易位构词、子数组和等于目标值、多数元素、高频元素及其排名、最长连续序列和查找重复项,训练用键记录次数、位置或结果。前缀累计解释为什么能找到目标和为指定值的连续片段,计数与集合则减少反复扫描。面对新题时,你会先识别哪些信息需要快速记录,而不是从复杂逻辑开始。
三、双指针与滑动窗口:
最长无重复子串、容器最多水、移动零、排序数组两数之和、除自身外的乘积数组、最小和子数组和、可替换最长重复字符,组成面试中的高频题型。课程说明左右指针何时移动,窗口何时扩大或收缩,如何处理重复值并保持原有顺序,并强调用明确的不变量解释线性时间解法。掌握后,面对区间或字符串题就不必反复重写暴力枚举。
四、栈、队列与堆:
有效括号、最小栈、逆波兰表达式求值、每日温度、用两个栈实现队列、数组中的指定序位大元素、数据流中位数和滑动窗口最大值,分别对应后进先出、先入先出和按大小取值的需要。你会练习用辅助结构保存状态,比较不同结构的适用场景,理解单调结构为什么能减少重复比较。
五、二分查找、排序与区间:
基础二分、旋转数组搜索、合并区间、最少会议室和颜色排序,重点不只是写模板,而是明确搜索边界、端点含义和排序依据。二分每次判断后都要能缩小搜索范围;区间题则要处理重叠、相邻和资源占用,这些习惯也适用于没有出现在目录中的变体题。
六、链表:
删除倒数节点、复制带随机指针的链表、重排、交点检测、环检测、有序链表合并和两数相加,覆盖指针移动与节点映射。虚拟头结点减少边界判断,快慢指针解决中点和环问题,字典帮助判断节点是否重复;随机指针复制还会让你看到额外空间如何换取清晰实现。
七、二叉树与二叉搜索树:
最大深度、三种遍历、层序遍历、验证搜索树、最近公共祖先、树的直径、序列化与反序列化、查找指定序位元素、根据前序和中序重建树、统计好节点、展开为链表,覆盖递归、队列和树结构改造。递归题要抓终止条件和子树不变量,搜索树要利用数值范围;原地修改时还要防止指针丢失。
八、图与图算法:
岛屿数量、课程安排、腐烂橘子、单词梯、网络延迟、太平洋与大西洋水流和图合法性,分别练习网格遍历、拓扑排序、广度优先搜索、最短路与连通性判断。通过标记访问状态、更新入度和维护到达时间,你会理解不同图题为何选择不同遍历方式,也能把复杂地图问题拆成可执行的步骤。
九、回溯:
生成所有排列、组合求和和单词搜索围绕选择、约束、撤销选择展开。排列要避免重复排列,组合要控制起始位置,单词搜索要沿多个方向探索并在边界处停止。写清当前路径何时有效、何时回退,回溯就不容易变成混乱的递归。
十、动态规划:
爬楼梯、打家劫舍、零钱兑换、最长递增子序列、最长公共子序列、分割等和子集、单词拆分、最大乘积子数组,逐步训练状态、转移、初始值和答案的拆解。记忆化递归与自底向上计算各有适用场景,子序列和子数组的连续性也会影响状态表达。掌握这些结构后,难题可以从猜公式变成可检查的状态表。
十一、Python面试常用模式:
最后实现自定义迭代器、大数据生成器、装饰器和最近最少使用缓存,分别连接迭代协议、惰性计算、函数包装与容量淘汰。学完不仅能找到答案,还能说明内存、状态和接口行为的变化。
这套课适合已经掌握Python基础语法、正在准备初级或中级开发面试的人,也适合做过项目却缺少算法训练的人。七十八个视频可以用主题复习,也可以按题型集中练习;三小时三十六分适合面试冲刺期反复回看。完成后,你面对新题时会先辨认数据结构和约束,比较朴素解法与优化解法,写出有边界意识的代码,并用时间和空间复杂度说明取舍。