题目地址

解题思路

感觉动态规划的题目都很难啊。本题要求是使用最小花费爬楼梯。根据题目示例,我们知道,爬到楼梯顶部,也就是要求达到数组长度的下标。

新建一个数组,因为可以从下标0或者1开始,也就是0,1下标的值为0,数组下一个的值就是,也就是用dp[i-1]与cost[i-1]的和 或者是dp[i-1] + cost[i-2]的值的最小值

代码

  1. var minCostClimbingStairs = function(cost) {
  2. const n = cost.length;
  3. const dp = new Array(n + 1);
  4. dp[0] = dp[1] = 0;
  5. for (let i = 2; i <= n; i++) {
  6. dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
  7. }
  8. return dp[n];
  9. };
  10. const cost = [10,15,20];
  11. const cost1 = [1,100,1,1,1,100,1,1,100,1];
  12. const cost2 = [0,1,1,1];
  13. const cost3 = [0,2,2,1];
  14. console.log('--result--',minCostClimbingStairs(cost3));