再也不用担心动态规划,BAT大佬精讲42道题目,相见恨晚

大家好,我是Carl

如今我已经在「代码随想录」上讲解了42道动态规划经典题目,共50篇文章,是时候做一篇总结了。

关于动态规划,在专题第一篇关于动态规划,你该了解这些!就说了动规五部曲,而且强调了五部对解动规题目至关重要!

这是Carl做过一百多道动规题目总结出来的经验结晶啊,如果大家跟着「代码随想哦」刷过动规专题,一定会对这动规五部曲的作用感受极其深刻。

动规五部曲分别为:

  1. 确定dp数组(dp table)以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组

动规专题刚开始的时候,讲的题目比较简单,不少录友和我反应:这么简单的题目 讲的复杂了,不用那么多步骤分析,想出递推公式直接就AC这道题目了。

Carl的观点一直都是 简单题是用来 巩固方法论的。 简单题目是可以靠感觉,但后面稍稍难一点的题目,估计感觉就不好使了。

在动规专题讲解中,也充分体现出,这动规五部曲的重要性。

还有不少录友对动规的理解是:递推公式是才是最难最重要的,只要想出递归公式,其他都好办。

其实这么想的同学基本对动规理解的不到位的

动规五部曲里,哪一部没想清楚,这道题目基本就做不出来,即使做出来了也没有想清楚,而是朦朦胧胧的就把题目过了。

  • 如果想不清楚dp数组的具体含义,递归公式从何谈起,甚至初始化的时候就写错了。
  • 例如动态规划:不同路径还不够,要有障碍! 在这道题目中,初始化才是重头戏
  • 如果看过背包系列,特别是完全背包,那么两层for循环先后顺序绝对可以搞懵很多人,反而递归公式是简单的。
  • 至于推导dp数组的重要性,动规专题里几乎每篇Carl都反复强调,当程序结果不对的时候,一定要自己推导公式,看看和程序打印的日志是否一样。

好啦,我们再一起回顾一下,动态规划专题中我们都讲了哪些内容。

动划基础

  • 关于动态规划,你该了解这些!
  • 动态规划:斐波那契数
  • 动态规划:爬楼梯
  • 动态规划:使用最小花费爬楼梯
  • 动态规划:不同路径
  • 动态规划:不同路径还不够,要有障碍!
  • 动态规划:整数拆分,你要怎么拆?
  • 动态规划:不同的二叉搜索树

背包问题系列

再也不用担心动态规划,BAT大佬精讲42道题目,相见恨晚_第1张图片

  • 动态规划:关于01背包问题,你该了解这些!
  • 动态规划:关于01背包问题,你该了解这些!(滚动数组)
  • 动态规划:分割等和子集可以用01背包!
  • 动态规划:最后一块石头的重量 II
  • 动态规划:目标和!
  • 动态规划:一和零!
  • 动态规划:关于完全背包,你该了解这些!
  • 动态规划:给你一些零钱,你要怎么凑?
  • 动态规划:Carl称它为排列总和!
  • 动态规划:以前我没得选,现在我选择再爬一次!
  • 动态规划: 给我个机会,我再兑换一次零钱
  • 动态规划:一样的套路,再求一次完全平方数
  • 动态规划:单词拆分
  • 动态规划:关于多重背包,你该了解这些!
  • 听说背包问题很难? 这篇总结篇来拯救你了

打家劫舍系列

  • 动态规划:开始打家劫舍!
  • 动态规划:继续打家劫舍!
  • 动态规划:还要打家劫舍!

股票系列

再也不用担心动态规划,BAT大佬精讲42道题目,相见恨晚_第2张图片

  • 动态规划:买卖股票的最佳时机
  • 动态规划:本周我们都讲了这些(系列六)
  • 动态规划:买卖股票的最佳时机II
  • 动态规划:买卖股票的最佳时机III
  • 动态规划:买卖股票的最佳时机IV
  • 动态规划:最佳买卖股票时机含冷冻期
  • 动态规划:本周我们都讲了这些(系列七)
  • 动态规划:买卖股票的最佳时机含手续费
  • 动态规划:股票系列总结篇

子序列系列

再也不用担心动态规划,BAT大佬精讲42道题目,相见恨晚_第3张图片

  • 动态规划:最长递增子序列
  • 动态规划:最长连续递增序列
  • 动态规划:最长重复子数组
  • 动态规划:最长公共子序列
  • 动态规划:不相交的线
  • 动态规划:最大子序和
  • 动态规划:判断子序列
  • 动态规划:不同的子序列
  • 动态规划:两个字符串的删除操作
  • 动态规划:编辑距离
  • 为了绝杀编辑距离,我做了三步铺垫,你都知道么?
  • 动态规划:回文子串
  • 动态规划:最长回文子序列

动规结束语

关于动规,还有 树形DP(打家劫舍系列里有一道),数位DP,区间DP ,概率型DP,博弈型DP,状态压缩dp等等等,这些我就不去做讲解了,面试中出现的概率非常低。

能把本篇中列举的题目都研究通透的话,你的动规水平就已经非常高了。 对付面试已经足够!

这已经是全网对动规最深刻的讲解系列了。

其实大家去网上搜一搜也可以发现,能把动态规划讲清楚的资料挺少的,因为动规确实很难!要给别人讲清楚更难!

《剑指offer》上 动规的题目很少,经典的算法书籍《算法4》 没有讲 动规,而《算法导论》讲的动规基本属于劝退级别的。

讲清楚一道题容易,讲清楚两道题也容易,但把整个动态规划的各个分支讲清楚,每道题目讲通透,并用一套方法论把整个动规贯彻始终就非常难了。

所以Carl花费的这么大精力,把自己对动规算法理解 一五一十的全部分享给了录友们,帮助大家少走弯路!

至于动态规划PDF,即将在公众号「代码随想录」全网首发!

最后感谢录友们的一路支持,Carl才有继续更下去的动力[玫瑰]

作者简介

Hello,我是Carl,哈工大师兄,ACM亚洲区铜牌打杂,毕业先后在腾讯、百度采坑多年,公众号「代码随想录」作者,致力于将算法讲清楚,期待你的关注。

一键三联一下好不好

你可能感兴趣的:(代码随想录,算法)