使用最小花费爬楼梯
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。
class Solution {
public int minCostClimbingStairs(int[] cost) {
int len = cost.length;
//动态规划,定义dp数组记录数据
int[] dp = new int[len+1];
// 从下标为0或1的台阶开始--此时支付为0
dp[0] = 0;
dp[1] = 0;
// 到达第i台阶所花费的最少体力:dp[i]
// dp[i-1]到dp[i]-花费体力->dp[i-1]+cost[i-1]
// dp[i-2]到dp[i]-花费体力->dp[i-2]+cost[i-2]
// 两种方式取最小值
for(int i = 2; i <= len; i++){
dp[i] = Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
}
return dp[len];
}
}