Skip to content
On this page

使用最小花费爬楼梯

TIP

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。

你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。

请你计算并返回达到楼梯顶部的最低花费

思路

动规五部曲

  1. 确定dp数组以及下标的含义:i表示要跳到第i层台阶,dp[i]表示要跳到第i层台阶所花费的体力值
  2. 确定递推公式:dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])
  3. dp数组如何初始化:可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯,所以都初始化为0
  4. 确定遍历顺序
  5. 举例推导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]
};