使用最小花费爬楼梯
TIP
给你一个整数数组 cost
,其中 cost[i]
是从楼梯第 i
个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0
或下标为 1
的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
思路
动规五部曲
- 确定dp数组以及下标的含义:
i
表示要跳到第i
层台阶,dp[i]
表示要跳到第i
层台阶所花费的体力值 - 确定递推公式:
dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])
- dp数组如何初始化:可以选择从下标为
0
或下标为1
的台阶开始爬楼梯,所以都初始化为0 - 确定遍历顺序
- 举例推导dp数组
js
var minCostClimbingStairs = function(cost) {
let dp = []
dp[0] = 0
dp[1] = 0
for(let i=2;i <=cost.length;i++){
dp[i] = Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])
}
return dp[cost.length]
};