[746] 使用最小花费爬楼梯

  1. 可以从下标0或者1作为起始位置------------dp[0] = dp[1] = 0。
  2. 一次性可以选择移动1次或者2次,故当下标>=2的时候,到达2有可能是从下标0开始或者下标1开始,cost[0] or cost[1];到达n,有可能是花费cost[n-1]到达,也有可能花费cost[n-2]到达。取最小值。
java 复制代码
class Solution {
    public int minCostClimbingStairs(int[] cost) {
        int n = cost.length;
        int[] dp = new int[n+1];
        dp[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];
    }
}

优化

看到当前的结果计算的时候,只需要上一个和上两个的值,所有使用"滚动数组"的思路。

java 复制代码
class Solution {
    public int minCostClimbingStairs(int[] cost) {
        int n = cost.length;
        int[] dp = new int[n+1];
        dp[0]=dp[1]=0;
        int dp1 = 0;
        int dp2 = 0;
        for(int i=2;i<=n;i++){
            dp[i] = Math.min(dp2+cost[i-1], dp1+cost[i-2]);
            dp1 = dp[i-1];
            dp2 = dp[i];
        }
        return dp[n];
    }
}
相关推荐
2501_9167665412 小时前
【Java】代理模式---静态代理与动态代理
java·开发语言·代理模式
写代码的【黑咖啡】12 小时前
Python常用数据处理库全解析
开发语言·python
纸带12 小时前
USB CDC 配置描述符中对比两个CDC设备配置
java·网络·windows
缺点内向12 小时前
Java:轻松实现 Excel 文档属性添加
java·开发语言·excel
pangtao202512 小时前
【瑞萨RA × Zephyr评测】看门狗
java·后端·spring
刺客xs12 小时前
c++多线程 线程池的实现
开发语言·c++
HappyBoy_201912 小时前
MybatisPlus IPage分页查询工具类
java·开发语言
爱敲点代码的小哥12 小时前
类型转换 递归算法 编译错误 装箱和拆箱 知识点
开发语言·c#
南风微微吹12 小时前
【2026年3月最新】计算机二级Python题库下载安装教程~共19套真题
开发语言·python·计算机二级python
小徐Chao努力12 小时前
【Langchain4j-Java AI开发】10-框架集成(Spring Boot & Quarkus)
java·人工智能·spring boot