给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/min-cost-climbing-stairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
/**动态规划1、dp[i]的意义2、递推公式3、初始化4、遍历顺序*/
class Solution {// i表示的是每上一层我们需要的花费// 递推公式// dp[i] = min(dp[i - 1] + cost[i - 1] , dp[i - 2] + cost[i - 2])// 代表的是在当前阶,我前面已经花费的值和上来的值,所以要+costpublic int minCostClimbingStairs(int[] cost) {// 定义动态数组(+1是因为我要的是跃到最上面的结果)int[] dp = new int[cost.length + 1];// 初始化dp[0] = 0;dp[1] = 0;// 遍历顺序for(int i = 2; i <= cost.length; i++){dp[i] = Math.min(dp[i - 1] + cost[i - 1] , dp[i - 2] + cost[i - 2]);}return dp[cost.length];}
}
注意你一定要想清楚我们dp[i]的意思,这里表示每阶我们要花费的值大小