这篇page是针对leetcode上的746.使用最小的花费爬楼梯所写的。小尼先简单的说明一下这道题的意思,其实就是给出一个整数组cost,并且其中cost[i]是从楼梯第一个台阶向上爬所需要支付的费用,支付了之后可以选择向上爬一个或者两个台阶。
小尼先说明一下这道题的解题的思想,我们细化每一步,就是说我们考虑一下我们dp[i]应该由什么组成,因为我们只能向上跳一层或者两层,所以我们的dp[i] = dp[i - 1] + cost[i - 1] 或者dp[i] = dp[i - 2] + cost[i - 2]我们的dp不论怎么样都是由下面的一层或者是下面的两层上来的,所以我们需要给出对应的dp的等式
小尼接下来给出对应的代码:
class Solution {
public int minCostClimbingStairs(int[] cost) {
int n = cost.length;
int []dp = new int[n + 1];
dp[0] = dp[1];
for(int i = 2; i <= n; i++){
dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
}
return dp[n];
}
}
上面所写的其实就是我们定义一个全新的数组dp用于记录我们的每一层所需要的费用,然后我们在用一个for循环进行对应的递归循环进行不段的遍历。
希望上面的代码可以给小伙伴们带来帮助~~~