[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];
    }
}
相关推荐
iナナ15 小时前
Spring Web MVC入门
java·前端·网络·后端·spring·mvc
驱动探索者15 小时前
find 命令使用介绍
java·linux·运维·服务器·前端·学习·microsoft
卷Java15 小时前
违规通知功能修改说明
java·数据库·微信小程序·uni-app
CoderYanger15 小时前
优选算法-双指针:2.复写零
java·后端·算法·leetcode·职场和发展
weixin_4462608515 小时前
快速构建网站的利器——Symfony PHP框架
开发语言·php·symfony
小雨凉如水15 小时前
k8s学习-pod的生命周期
java·学习·kubernetes
王夏奇15 小时前
C语言中#pragma的用法
c语言·开发语言
李宥小哥16 小时前
C#基础10-结构体和枚举
java·开发语言·c#
带娃的IT创业者16 小时前
第4集:配置管理的艺术:环境变量、多环境配置与安全实践
开发语言·python·安全·项目配置·开发基础
领创工作室16 小时前
安卓设备分区作用详解-测试机红米K40
android·java·linux