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

  1. 可以从下标0或者1作为起始位置------------dp0 = dp1 = 0。
  2. 一次性可以选择移动1次或者2次,故当下标>=2的时候,到达2有可能是从下标0开始或者下标1开始,cost0 or cost1;到达n,有可能是花费costn-1到达,也有可能花费costn-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];
    }
}
相关推荐
J2虾虾10 分钟前
C 语言 void 完全用法
c语言·开发语言
码语智行16 分钟前
地图上图、空间拓扑查询示例
java·arcgis
会Tk矩阵群控的小木28 分钟前
基于Python的iMessage短信群发与社媒多账号统一管理系统实现
开发语言·windows·python·新媒体运营·开源软件·个人开发
程序员黑豆30 分钟前
AI全栈开发 - Java:变量
java·前端·ai编程
我是一颗柠檬31 分钟前
【Java项目技术亮点】分库分表+数据路由策略:单表5000万后的架构升级方案
java·开发语言·分布式·架构
wu_ye_m32 分钟前
学习c语言第35天 函数声明和定义
c语言·开发语言·学习
布朗克16839 分钟前
25 IO流高级操作——序列化、NIO与Files工具类
java·数据库·io·nio
njsgcs40 分钟前
c# solidworks 创建装配体工程图+bom
开发语言·c#·solidworks
小研说技术44 分钟前
Spring AI实现rag流程(简易版)
java·后端
亓才孓1 小时前
【本地项目引用外部库的类,想修改字段遇到的请缓存的问题】
java·maven