题目描述:
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。
思考
- 创建一个dp数组(length=n+1),dp[i]:表示到达第i个台阶需要的最低花费
- 递推公式: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阶需要的最小花费。
- 初始化:dp[0]=0,dp[1]=0:根据题意,只有往上爬时才需要花费,所以开始时,是不需要花费体力。
- 遍历顺序:从前往后,i=2
- 打印出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];
};
结果