746. 使用最小花费爬楼梯

/**
1.dp[i]表示到达第i步楼梯的最小花费,即最优解
2.要到达第i步楼梯,必然是通过爬一个阶梯或者爬两个阶梯实现的
    爬一个阶梯的情况:dp[i-2]
    爬两个阶梯的情况:dp[i-1]
3.选择是爬一个阶梯,还是爬两个阶梯的花费最少。即 min(dp[i-2],dp[i-1])
4.经过第三步后已经是最优的状态,最后爬上当前楼梯,即 min(dp[i-2],dp[i-1]) + cost[i]
 * @param {number[]} cost
 * @return {number}
 */
var minCostClimbingStairs = function(cost) {
    const min=(a,b)=>a>b?b:a;
    cost.push(0);
    var dp1=cost[0];
    var dp2=cost[1];
    var dp=0;
    for(var i=2;i<cost.length;i++){
        dp=min(dp1,dp2)+cost[i];
        dp1=dp2;
        dp2=dp;
        
        
    }
    return dp;
};

 

posted @ 2019-03-28 10:26  remly  阅读(130)  评论(0编辑  收藏  举报