day38 动态规划part1 代码随想录算法训练营 746. 使用最小花费爬楼梯

题目:746. 使用最小花费爬楼梯

我的感悟:

  • 哈哈,我居然自己独立写出来了,确实,只要定义定清楚了,哪怕定的含义只有自己能看懂,只要定义一致就可以求出解决来!!!
  • 我真是个大天才!!

理解难点:

  • 定义要清晰

听课笔记:

  • 哈哈,我这个解题,是参考答案里没有的。
  • 我这个dp【i】的定义是,到达此刻要花费的费用,并算上往后走的费用,是min(dp[i-1],dp[i-2]) + cost[i] ,我这里要算的是最后n+1的值,要加一个cost的[0]补在末尾。
  • ==========听视频补充========
  •  746. 使用最小花费爬楼梯 
    题意跟我理解差不多
    他的定义式dp[i]是之前的所需的花费,而继续跳就需要dp[i] + cost[i]
    所以,他的递推公式 dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2])
    他也介绍了,可以用另外的一种花费的方式,像我写的一样。
    ========

代码示例:

class Solution:
    def minCostClimbingStairs(self, cost: List[int]) -> int:        
        n = len(cost)
        cost.append(0)
        dp = [0] * (n+1)
        # 目标是求dp[n]
        dp[0] = cost[0]
        dp[1] = cost[1]
        for i in range(2,n+1):
            dp[i] = min(dp[i-1],dp[i-2]) + cost[i]
        
        return dp[n]

通过截图:

我的错误写法:

资料:

错误定位:Kimi工具

卡尔:

  1. 使用最小花费爬楼梯 

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

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

https://programmercarl.com/0746.%E4%BD%BF%E7%94%A8%E6%9C%80%E5%B0%8F%E8%8A%B1%E8%B4%B9%E7%88%AC%E6%A5%BC%E6%A2%AF.html

视频讲解:https://www.bilibili.com/video/BV16G411c7yZ

posted @ 2024-02-21 21:57  o蹲蹲o  阅读(6)  评论(0编辑  收藏  举报