开篇:为什么大厂都爱考动态规划

你好,我是卢誉声,很高兴能在这个专栏与你见面,和你一起搞定动态规划。 开门见山,我先做一个自我介绍。最开始,我在思科系统(Cisco Systems)工作,曾参与设计和开发了下一代视频会议系统的核心数据交换服务。我的工作涵盖了协议栈开发、微服务设计、...

动态规划面试宝典

课前必读:动态规划问题如何下手

你好,我是卢誉声。 你是否曾经有过,或者正在经历这样的体验,那就是在学习和掌握了一些数据结构和算法后,面对一个较为复杂的面试题,仍然无从下手? 那个问题看起来好像可以使用递归,但是我该怎么遍历整个数据结构呢?   这个问题看起来需要穷举...

动态规划面试宝典

1、硬币找零问题:从贪心算法说起

你好,我是卢誉声。 作为“初识动态规划”模块的第一节课,我会带着你一起从贪心算法开始了解整个知识体系的脉络。现实中,我们往往不愿意承认自己贪婪。事实上,贪婪是渴望而不知满足,它是人的一种基本驱动力。既然是基本驱动力,那它自然就不会太难。 所以你可能会...

动态规划面试宝典

2、暴力递归:当贪心失效了怎么办

你好,我是卢誉声。 上一课我们学习了贪心算法,提出了硬币找零的问题,发现了贪心算法的局限性。与此同时,我还提出了一个重要概念,那就是局部最优与整体最优的概念,即最优化问题。今天,我们就从最优化问题开始聊起,引出学习动态规划时的另一重要概念:递归。 我...

动态规划面试宝典

3、备忘录:避免递归中重复计算

你好,我是卢誉声。 从前面的课程中我们已经看到,动态规划问题的一般形式就是求最值。因此我先讲解了什么是最优解问题,在考虑整体最优的情况下,我们需要找到一种办法获取最优解。那么最简单直接的做法是什么呢? 其实就是把所有可行的答案穷举出来,然后在所有可行...

动态规划面试宝典

4、动态规划:完美解决硬币找零

你好,我是卢誉声。今天我们来继续学习动态规划。 在前面的几节课中,我们经历了贪心算法求解硬币找零的问题,并从中发现了贪心算法本身的局限性:它几乎只考虑了局部最优,因此无法应对需要考虑整体最优的算法面试问题。 针对这一问题,我们重新思考了解决方案,用递...

动态规划面试宝典

5、什么样的问题应该使用动态规划

你好,我是卢誉声。 作为“初识动态规划”模块的最后一课,今天我们不谈具体的解决方案了,我们来聊聊面试相关的话题,做个总结,也为我们后面的深入学习打下一个良好的基础。 那说起动态规划,我不知道你有没有这样的困扰,在掌握了一些基础算法和数据结构之后,碰到...

动态规划面试宝典

6、0-1背包:Hello World

你好,我是卢誉声。从今天开始,我们正式进入动态规划套路模块。 不知道你是否跟我有过相似的经历,那就是提起动态规划,最先想到的就是背包问题。事实上,背包问题分很多种,大多数人首先遇到的一般是背包中的0-1背包问题。 因此,我把这个问题称作 Hello ...

动态规划面试宝典

7、完全背包:深入理解背包问题

你好,我是卢誉声。 在上节课中,我们用动态规划解法,成功解决了动态规划领域中的 Hello World 问题。这个问题虽然比较初级,但却很有代表性,它比较全面地展示了动归解题的套路。 但光解决一个0-1背包问题显然不够过瘾。如果你觉得应用动态规划的解...

动态规划面试宝典

8、子数组问题:从解决动归问题套路到实践解题思路

你好,我是卢誉声。 如果你已经通过前面的课程,掌握了背包问题的奥义,那么恭喜你已经正式跨过动态规划的门槛了。除了背包问题以外,我们还需要掌握剩下几个类型的动态规划问题。 其中有一个是子数组问题,另一个是子序列问题。今天,我们就从子数组问题开始讲起,这...

动态规划面试宝典
12