[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];
    }
}
相关推荐
Dontla13 小时前
go语言Windows安装教程(安装go安装Golang安装)(GOPATH、Go Modules)
开发语言·windows·golang
chushiyunen13 小时前
python rest请求、requests
开发语言·python
铁东博客14 小时前
Go实现周易大衍筮法三变取爻
开发语言·后端·golang
baidu_huihui14 小时前
在 CentOS 9 上安装 pip(Python 的包管理工具)
开发语言·python·pip
南 阳14 小时前
Python从入门到精通day63
开发语言·python
lbb 小魔仙14 小时前
Python_RAG知识库问答系统实战指南
开发语言·python
java1234_小锋14 小时前
Java高频面试题:Springboot的自动配置原理?
java·spring boot·面试
末央&14 小时前
【天机论坛】项目环境搭建和数据库设计
java·数据库
枫叶落雨22215 小时前
ShardingSphere 介绍
java
花花鱼15 小时前
Spring Security 与 Spring MVC
java·spring·mvc