动态规划通常被认为是编程面试中最令人头疼的课题之一。它看起来很抽象,而且有些算法的方法似乎不合常理,但实际上并非如此。

我们刚刚在freeCodeCamp.org的YouTube频道上发布了一门关于动态规划的课程。这门课程采用直观易懂的方式来讲解这些复杂的算法。

这门课程由Sheldon创建,他是一名拥有超过10年经验的谷歌工程师。他的课程旨在帮助大家培养对优化问题的直观理解能力。与要求你记住数百个单独的问题不同,Sheldon教会你如何识别那些将各种问题联系起来的模式。

该课程将动态规划分为六种基本模式,并详细解释了每种模式的原理以及相应的代码实现(使用Python语言)。

1. **常量转移模式**:通过一些简单的例子来理解这种模式,比如爬楼梯和偷窃房子的问题。在这种情况下,状态取决于之前的状态数量。

2. **网格模式**:通过一些二维的动态规划问题来了解这种模式。例如,如何通过构建表格来解决导航问题。

3. **两个序列模式**:学习如何使用二维表格来比较字符串和序列。这包括最长公共子序列和编辑距离等经典问题。

4. **区间动态规划**:解决涉及在区间内寻找最优子结构的问题。例如,最长回文子序列问题。

5. **非常量转移模式**:理解那些状态取决于可变数量的先前状态的复杂情况。例如,最长递增子序列问题。

6. **背包类问题**:掌握如何解决涉及构建特定总和或填充容量的问题。例如,分割等价子集求和问题和硬币兑换问题。

请观看完整的课程视频,网址为freeCodeCamp.org YouTube频道(观看时间约为2小时)。

Comments are closed.