通知
在 2024/2/1 之前,我的课程都发布在小鹅通平台,但是为了给读者更丰富流畅的学习体验,自 2024/2/1 开始,我将课程全面迁移到新网站 labuladong.online,本课程的新地址为:
https://labuladong.online/algo/ds-class/
未来我将不再使用小鹅通平台,之前已经在小鹅通购买课程的读者,请在 这里 按照说明操作,将你在小鹅通的课程权限同步到新网站。
在新网站中,课程内容页将全线支持多语言解法、行内图片注释、可视化面板、可视化编辑器、刷题插件等配套工具,enjoy yourself!
本课程的内容
废话不多说,直接说大家最关心的点。本课程内容为常见数据结构的实现原理,用大量习题强化你对算法模板的运用。如果你想针对性提升写递归算法的功力,可以学习 二叉树递归专题课 进阶。
本课程主要分为两部分:第一部分是手把手带你实现常用的数据结构,第二部分手把手你套框架解决常见数据结构相关的经典习题。
手把手实现数据结构的部分主要是视频,讲的会比较细,适合时间比较多或者基础比较薄弱的读者,比如跨行转码或者应届生。
如果你的时间不算充裕,希望快速提升算法基本功对付面试,可以选择性跳过视频部分的基础,着重学习标记为【强化练习】的习题部分。
我的课程中所有习题都是用框架化、流程化的思维模式手把手带你举一反三地解决这些问题,争取给你练出肌肉记忆。
我会在视频中边写代码边画图,方便大家理解数据结构底层的实现原理:
![](https://wechatapppro-1252524126.file.myqcloud.com/appktavsiei5995/image/b_u_611d1ab974bdf_rT7Z5OVb/l46zdtf30t28.png)
![](https://wechatapppro-1252524126.file.myqcloud.com/appktavsiei5995/image/b_u_611d1ab974bdf_rT7Z5OVb/l46zdtf40xhx.png)
本课中主要用 Java 写代码,因为 Java 这种语言的语法非常规范,即便你之前没用过 Java 也不妨碍理解代码逻辑。而且我会在课程开头写一个简明的教程说明本课程所需的 Java 基础,所以无论你是否熟悉 Java 都可以学习本课程。
针对算法学习,我给出的方法是带你用完全统一的思维模式,甚至是完全统一的代码风格去不断地做题,手把手带你运用代码框架,以不变应万变。你可以说思维框架这种东西就像蹲马步,朴实无华且枯燥,但架不住他就是比花拳绣腿有用啊,对不对?
比如我总结过 滑动窗口算法框架套路,其中总结了运用滑动窗口算法时需要问自己的三个问题。那么我在滑动窗口习题的这一节内容中就列举了几道经典题目,且每道题都是按照统一的流程和统一的代码风格求解:
![](/algo/images/%E7%AE%80%E4%BB%8B/ds_%E6%BB%91%E7%AA%97%E4%BE%8B%E9%A2%98.jpg)
![](/algo/images/%E7%AE%80%E4%BB%8B/ds_%E6%BB%91%E7%AA%97%E4%BE%8B%E9%A2%982.jpg)
另外,在我的 Chrome/vscode/Jetbrain 系列插件中也能解锁我对这些题目的讲解,结合课程中的视频和图文讲解,加上刷题插件的辅助,可以说这是一种全方位的丝滑学习体验。
当然,本课程的焦点在于数据结构的实现及其必知必会的算法技巧,不包含诸如动态规划等高级算法的内容。如果对这类进阶递归算法感兴趣,推荐你购买我的 二叉树递归专题课。
购买本课程后还将解锁我的全系刷题插件中的数据结构专属题解,解锁方法见课程第一章的准备工作。