算法随想录第三十八天打卡| 理论基础 , 509. 斐波那契数, 70. 爬楼梯 , 746. 使用最小花费爬楼梯

发布时间:2024年01月18日

?理论基础?

无论大家之前对动态规划学到什么程度,一定要先看?我讲的?动态规划理论基础。?

如果没做过动态规划的题目,看我讲的理论基础,会有感觉?是不是简单题想复杂了??

其实并没有,我讲的理论基础内容,在动规章节所有题目都有运用,所以很重要!??

如果做过动态规划题目的录友,看我的理论基础?就会感同身受了。

代码随想录

视频:从此再也不怕动态规划了,动态规划解题方法论大曝光 !| 理论基础 |力扣刷题总结| 动态规划入门_哔哩哔哩_bilibili

?509. 斐波那契数

很简单的动规入门题,但简单题使用来掌握方法论的,还是要有动规五部曲来分析。

代码随想录

视频:手把手带你入门动态规划 | LeetCode:509.斐波那契数_哔哩哔哩_bilibili

class Solution(object):
    def fib(self, n):
        if n==0 :
            return 0
        if n==1 or n==2:
            return 1
        return self.fib(n-1)+self.fib(n-2)
            

总结

知道递归式就已经解决了90%

?70.?爬楼梯???

本题大家先自己想一想,?之后会发现,和?斐波那契数?有点关系。

代码随想录

视频:带你学透动态规划-爬楼梯(对应力扣70.爬楼梯)| 动态规划经典入门题目_哔哩哔哩_bilibili

class Solution(object):
    def climbStairs(self, n):
        if n==1:
            return 1   
        dp=[0]*n
        dp[0]=1
        dp[1]=2
        for i in range(2,n):
            dp[i]=dp[i-1]+dp[i-2]
        return dp[n-1]

总结

感觉像是高中的概率里的爬楼梯的问题,要找到它的定义才行。

?746.?使用最小花费爬楼梯?

这道题目力扣改了题目描述了,现在的题目描述清晰很多,相当于明确说?第一步是不用花费的。?

更改题目描述之后,相当于是?文章中?「拓展」的解法?

代码随想录

视频讲解:动态规划开更了!| LeetCode:746. 使用最小花费爬楼梯_哔哩哔哩_bilibili

class Solution(object):
    def minCostClimbingStairs(self, cost):
        if len(cost)==1:
            return cost[0]
        if len(cost)==2:
            return min(cost[0],cost[1])
        dp=[0]*(len(cost)+1)
        dp[0]=0
        dp[1]=0
        for i in range(2,len(dp)):
            dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])
        return dp[len(cost)]

        

总结

我开始是想的是第一步和第二步是不要钱的,但考虑到无法比较当前的位置价格的大小,所以考虑的是起跳完后的值,结果只需要在比较时加上当前的值就行了。

文章来源:https://blog.csdn.net/2303_79574965/article/details/135587449
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。