解题思路
reach[i]是到达第i个阶梯前已经花费的最小体力 也就是到第i阶花费体力为cost[i]+reach[i]
初始可选择第0个和第1个 则在到达这两个阶梯前 最小花费0体力
按题意可以认为最后一步的cost是0 则reach[n]即是到达顶部花费的最小体力
解题代码
class Solution {
public int minCostClimbingStairs(int[] cost) {
int n=cost.length;
int[] reach=new int[n+1];
reach[0]=reach[1]=0;
for(int i=2;i<n+1;i++){
reach[i]=Math.min(reach[i-1]+cost[i-1],reach[i-2]+cost[i-2]);
}
return reach[n];
}
}