2025年--Lc178--H746. 使用最小花费爬楼梯(动态规划)--Java版
1.题目
2.思路
举例子:【10,15,20】
(1)从 10(下标 0)开始:
走法 A:0→1(付 10),1→顶(跳两级,付 15),总价 25
走法 B:0→2(跳两级,付 10),2→顶(付 20),总价 30
⇒ 最省是 25
(2)最省钱的走法是:从 1 号台阶开始。
先支付 cost[1] = 15,然后直接跨两级到达顶部(超出数组末尾)。
总花费 = 15。
如果从 0 开始要么付 10 后还得走、要么路线更贵,因此 15 是最小值。
可选择向上爬一个或者两个台阶。
3.代码实现
class Solution {public int minCostClimbingStairs(int[] cost) {//计算数组的个数int n=cost.length;int[] dp=new int[n+1];dp[0]=0;dp[1]=0;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];}
}