leetcode hot 100最小花费爬楼梯

在这里插入图片描述
本题和之前的爬楼梯类似,但是需要考虑到花费的问题!**注意,只有在爬的时候,才花费体力!**那么,我们还是按照动态规划的五部曲来思考。

首先我们要确定dp数组的含义,那么就是我们爬到第i层所花费的体力

然后确定递推公式:那我们爬到第i层的花费,可以由i-1之前的花费也就是dp[i-1]+爬到i层需要的花费cost[i-1]得到。也可以由dp[i-2]+cost[i-2]得到,那我们需要求最小值,也就是min。

然后初始化,我们可以站在0阶梯处,这时候花费是0 即dp[0] = 0;也可以在1处开始,dp[1] = .0。(因为题中说明可以从0或者1开始,并且只有移动的时候才花费体力)

确定顺序:我们直接从0开始往后遍历即可

打印dp

class Solution {public int minCostClimbingStairs(int[] cost) {//确定一共有多少阶梯int len = cost.length;int[] dp = new int[len+1];dp[0] = 0;dp[1] = 0;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];}
}

注意:关于length length() size():
length——数组的属性;
length()——String的方法;
size()——集合的方法 list;