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]
通过截图:
我的错误写法:
资料:
卡尔:
- 使用最小花费爬楼梯
这道题目力扣改了题目描述了,现在的题目描述清晰很多,相当于明确说 第一步是不用花费的。
更改题目描述之后,相当于是 文章中 「拓展」的解法