爬楼梯的最小消费

111 阅读1分钟

题目描述:

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。

思考

  1. 创建一个dp数组(length=n+1),dp[i]:表示到达第i个台阶需要的最低花费
  2. 递推公式:dp[i] =min( dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]):到达第n阶有两种方法1 从第n-1阶往上走1阶;2 从第n-2阶往上走2阶两种方法中的最小花费就是到达第n阶需要的最小花费
  3. 初始化:dp[0]=0,dp[1]=0:根据题意,只有往上爬时才需要花费,所以开始时,是不需要花费体力。
  4. 遍历顺序:从前往后,i=2
  5. 打印出dp数组,对比dp数组与预期的dp数组是否一致。

代码

var minCostClimbingStairs = function(cost) {
    var 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];
};

结果

image.png