[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];
    }
}
相关推荐
码出财富13 小时前
SpringBoot 内置的 20 个高效工具类
java·spring boot·spring cloud·java-ee
沐知全栈开发13 小时前
Perl 数据库连接
开发语言
我是小疯子6613 小时前
Python变量赋值陷阱:浅拷贝VS深拷贝
java·服务器·数据库
森叶14 小时前
Java 比 Python 高性能的原因:重点在高并发方面
java·开发语言·python
二哈喇子!14 小时前
Eclipse中导入外部jar包
java·eclipse·jar
微露清风14 小时前
系统性学习C++-第二十二讲-C++11
java·c++·学习
qq_3168377514 小时前
uni.chooseMedia 读取base64 或 二进制
开发语言·前端·javascript
方圆工作室14 小时前
【C语言图形学】用*号绘制完美圆的三种算法详解与实现【AI】
c语言·开发语言·算法
小二·14 小时前
Python Web 开发进阶实战:混沌工程初探 —— 主动注入故障,构建高韧性系统
开发语言·前端·python
Lkygo14 小时前
LlamaIndex使用指南
linux·开发语言·python·llama