快速突破面试算法之动态规划篇

一、前言:什么是动态规划

     用一句话概括:走一步看一步。用一个生动例子来跟大家说!爬楼梯~~~

     

假设你现在正在爬楼梯,楼梯有 n 级。每次你只能爬 1 级或者 2 级,那么你有多少种方法爬到楼梯的顶部? 

这个问题怎么解呢?身为理工男,凡事没有表达式不能解决的!  首先我们先设F(n)是爬n级楼梯的方法数量。

因为其中我们只能爬1级或2级。所以我们到达n级的之前的一步肯定是n-1级或者n-2级!

所以当我们走到n级的时候,就看走到n-1和n-2的方法,这就是走一步看一步!

我们就可以列出美丽的公式了:F(n)=F(n-1)+F(n-2)   n>2

初始值是F(1)=1 F(2)=1  然后for就可以计算走每一级的总数了!!!!  这那么简单!  千万比要想的太难!!

二、动态规划:自己的总结

1.递归和动态规划都是将原问题拆成多个子问题然后求解,他们之间最本质的区别是,动态规划保存了子问题的解,避免重复计算。

2.动态规划,比较通俗的解法,搞一个dp数组,存之前的结果(什么总数,什么次数啊)

  但是很多情况都可以将这个数组换成两个变量(记录变化),节约空间复杂度

3.动态规划=穷举+剪枝

一般情况 都会嵌套两层for循环dp[][];如果dp[]那么就是一个for,状态转移。,去找每个状态点与之前每个状态点的区别,取最利于我们的情况放入dp数组。在循环的时候如果dp数组+1了,那么for要<=。初始化还是要分情况。不同情况初始化不同值,多看例题

4.说到什么序列,很容易就是动态规划,尤其是那种还有加了条件的序列更容易成为动态规划的对象,因为条件会存在一个值,然后就是逮着这个值进行比较,之后进行下一步

 

三、一切理论都源于实践,多刷题领悟其中精髓才能真正掌握!

 

四、动态规划相关的面试高频题目录

1.爬楼梯(力扣 70) 斐波那数列                  博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112750362

2.打家劫舍II(力扣213)  斐波那数列           博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112750623

3.不同的路径(力扣62)矩形路径                 博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112750705

4.等差数列划分(力扣413)数组区间           博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112750803

5.整数拆分(力扣343)分割整数                  博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112750889       

6.解码方法(力扣91)分割整数                    博主的笔记思路及代码讲解:https://blog.csdn.net/qq_40262372/article/details/112750979 

五、各种类型的高频面试题汇总:

https://blog.csdn.net/qq_40262372/article/details/112556249

 

六、如有疑问可加QQ群讨论:725936761     博主免费答疑
欢迎大家一起讨论进步。后续遇到相似的题会继续更新!

为了鼓励大家坚持,当天打卡人数超过一半,群主发一个红包(群主是学生),激励大家坚持下去!希望以后找工作的时候大家能互捞一下~~~

群里已有字节、滴滴大佬,可帮忙内推!也欢迎其他大厂的工作人士进群!帮忙内推~

 

B站视频讲解如何三个月学习JAVA拿到实习Offer:

https://www.bilibili.com/video/BV1dV411t71K

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值