/** 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; };