题目地址
解题思路
感觉动态规划的题目都很难啊。本题要求是使用最小花费爬楼梯。根据题目示例,我们知道,爬到楼梯顶部,也就是要求达到数组长度的下标。
新建一个数组,因为可以从下标0或者1开始,也就是0,1下标的值为0,数组下一个的值就是,也就是用dp[i-1]与cost[i-1]的和 或者是dp[i-1] + cost[i-2]的值的最小值
代码
var minCostClimbingStairs = function(cost) {
const n = cost.length;
const dp = new Array(n + 1);
dp[0] = dp[1] = 0;
for (let i = 2; i <= n; i++) {
dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
}
return dp[n];
};
const cost = [10,15,20];
const cost1 = [1,100,1,1,1,100,1,1,100,1];
const cost2 = [0,1,1,1];
const cost3 = [0,2,2,1];
console.log('--result--',minCostClimbingStairs(cost3));