课程介绍:
算法学得好,工作不愁找。不过对于很多非科班出身的程序员来说,学好算法是一件有难度的事情,知识版块多、理论性强、技术落地复杂,付出大量精力仍不一定学得好。本课程由兼具丰富信息学竞赛辅导经验+多年大厂从业经验的老师设计并讲解,在系统化梳理算法中高阶知识框架的基础上,结合实际工业需求与编程实践,带大家在吃透高难理论的同时掌握其真正优质的应用实践。
课程大纲:
第1章 引言 Introduction 1 节 | 9分钟
本章介绍课程学习路径以及这门课能给大家带来什么提升
第2章 贪心 Greedy 14 节 | 141分钟
贪心法,看似思路简单,实则暗坑无数。更重要的是,贪心法的使用条件苛刻,且灵活度高,决定了它很难系统地学习。本章我们帮你提炼总结了贪心法的几种分类,每一类的适用场景,以及问题分析和算法设计的通用流程,让你即便遇到陌生的贪心问题,也能做到丝毫不慌,同时给后续的搜索与动态规划章节打好理论基础...
第3章 搜索基础 Basic Searching 11 节 | 127分钟
与贪心不同,搜索是一种“全能算法”,但是处理不好,它也可能变成“全不能”。本章我们从搜索的理论基础开始讲起,总结出搜索通用的六大要素,并且由这六大要素衍生出一套完整的算法分析与设计的思路模板,结合经典的深度优先搜索与广度优先搜索,帮你真正做到“遇题不会搜一下”。...
第4章 动态规划基础 Dynamic Programming Basics 13 节 | 125分钟
动态规划是许多人学习算法的瓶颈,被戏称为“从入门到放弃”。它的理论较为晦涩,复杂度高,且很少有人能讲明白动态规划从理论到解题之间的模糊地带——如何根据问题的条件,系统地设计算法。本章我们在讲清楚动态规划的理论知识的基础上,从庞杂的细节中提炼出一套标准的问题分析和算法设计的流程,助你“遇题有底气,做题...
第5章 搜索进阶 Advanced Searching 14 节 | 192分钟
在学习了搜索基础之后,相信你不难发现,搜索的潜力非常的巨大,如果优化得当,它一样可以成为性能超群的算法,甚至在工业界扮演非常重要的角色。本章我们系统地介绍搜索的多种进阶优化策略,从搜索形式的优化,到使用启发函数进行搜索状态的评估,再到如何用剪枝优化去掉非最优情况,让你学完后,能够全方位彻底地压榨搜索...
第6章 动态规划进阶 Advanced Dynamic Programming 15 节 | 203分钟
打好动态规划的基础之后,相信大家最关心的,就是怎么才能砍瓜切菜地解决高难度问题。本章系统地介绍了动态规划的五大类常见模型,以及如何应用前面讲解的分析流程,对各类典型模型进行DP方法的设计与实现,此外,还讲解了DP的三大优化策略,并分析了他们的适用条件和实现方法,帮你啃下动态规划的最后一块硬骨头...
第7章 算法综合实战——全自动物流系统设计与实现
在学完了贪心、搜索及动态规划三大类算法之后,相信你已经跃跃欲试了。本章我们借助一个实战项目《全自动物流系统》,在用工业界的流程和标准进行规范化的基础上,对前面所学的三大类算法进行系统的,综合的实战演练。相信通过本章的项目实战,你的算法设计和落地能力,将会再上一个台阶...
第8章 堆与堆的高级变种 Heap
堆的应用极为广泛,它不仅是各种优先队列实现的基础数据结构,同时还能作为各种高级算法的辅助和优化工具。本章我们从原理、实现细节和性能分析的角度,对堆进行了全方位的解析,同时还介绍了堆用来支持特殊操作的高级变种,学完本章,相信一提到堆,你绝对可以信手拈来 ...
第9章 二叉搜索树基础 Binary Search Tree
二叉搜索树是所有树形数据结构中最为重要的一种,可以说只要有数据检索的地方,都离不开二叉搜索树。经过本章的学习,你将能够熟悉并掌握二叉搜索树的全部基本操作,包括建立,插入,删除,查找,以及经典的求第K小元素的应用,并且初步了解平衡化旋转,为后续平衡二叉树以及近似平衡树的学习打好基础...
第10章 二叉搜索树的优化:平衡二叉搜索树
二叉搜索树虽好,但有可能退化,所以无论实际应用,还是考试面试,平衡二叉搜索树才是重头。本章带你学习两种经典的平衡二叉搜索树——AVL树与红黑树,从原理到实现的每个细节出发,带你彻底理解和掌握这类又快又难的高级数据结构...
第11章 平衡树的平替:近似平衡二叉树
平衡二叉树性能强大,但缺点是太复杂,如果时间有限,比如面对算法竞赛,又或者对空间要求很苛刻,不能有多余数据,怎么办?本章带你了解一类特殊的二叉搜索树——近似平衡二叉树,它们用较低的实现难度达到接近平衡二叉树的性能。学完本章,相信你能够了解这些近似平衡树各自的实现原理,性能比较,优缺点和适用场景,并且...
第12章 多维树形结构 Multi-Dimensional Tree Structures
二叉搜索树并非万能,针对特殊的应用场景往往有更好的的选择。本章介绍其他三种常见的多维树形结构——字典树,线段树和树状数组,重点在于他们的适用场景,原理,以及如何在他们的基础上进行拓展,用来处理更多更复杂的问题。学完本章后,你不仅能具备解决更多复杂数据问题的能力,还能体会到树形结构的优美与强大...
第13章 复杂链式结构 Complex Linked Structure
学完前面几章,你一定会有疑问:“数据结构难道就是各种树吗?”实则不然,各种非树形结构依旧在许多不同的应用场景中占有非常重要的地位。本章我们介绍并查集,块状链表和跳跃表三种非树形的高级数据结构,通过学习,你不仅能够掌握他们的原理,实现细节和适用场景,还能掌握更多的数据结构优化的思路,让自己的思维和眼界...
第14章 数据结构综合实战——数据库的设计与实现
经过前面章节的学习,你应该已经充分掌握了多种高级数据结构的原理,特征和实现方法。现在,就让我们来通过一个《数据库设计》的项目,来对所学的数据结构进行一个综合实战,检验一下自己对数据类问题的分析和处理的能力。本章我们依旧会按照工业界的标准来进行需求分析,模块设计,数据结构实现和测试,让你真正学以致用...
第15章 NOIP模拟赛(介于普及组和提高组之间的难度)
本章采用NOIP赛制:无提交机会,代码结束后统一提交参与评测,根据通过的数据点给分,最后会给出解题报告与备赛策略,提前练习,事半功倍。
第16章 ICPC模拟赛(介于网络预选赛和亚洲区域赛之间的难度)
本章采用ICPC赛制制定竞赛规则,提前模拟 比赛不慌。
第17章 总结 Conclusion
总结本课程的所有知识,回顾学习成果,对后续学习的策略和实战平台进行推荐
页:
[1]