国际英文网站,村志网站建设,常州网站建设套餐,阿里云网站建设步骤本题和之前的爬楼梯类似#xff0c;但是需要考虑到花费的问题#xff01;**注意#xff0c;只有在爬的时候#xff0c;才花费体力#xff01;**那么#xff0c;我们还是按照动态规划的五部曲来思考。
首先我们要确定dp数组的含义#xff0c;那么就是我们爬到第i层所花费… 本题和之前的爬楼梯类似但是需要考虑到花费的问题**注意只有在爬的时候才花费体力**那么我们还是按照动态规划的五部曲来思考。
首先我们要确定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[len1];dp[0] 0;dp[1] 0;for(int i 2;ilen;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