LeetCode-746-使用最小花费爬楼梯-动态规划

题目描述:

给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。

你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。

请你计算并返回达到楼梯顶部的最低花费。

题目链接:LeetCode-746-使用最小花费爬楼梯

解题思路:注释中有详解。
代码实现:

java 复制代码
class Solution {
    public int minCostClimbingStairs(int[] cost) {
        // 1. 确定 dp[i] 的含义: dp[i]表示爬到第 i 个位置的最小花费
        // 2. 递推公式:dp[i]=Math.min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2])
        //            dp[i-1]:再加上向上跳 1步的花费 cost[i-1]
        //            dp[i-2]:再加向上上跳 2步的花费 cost[i-2]
        // 3. 如何初始化:dp[0]=0; dp[1]=0,因为不需要花费体力,开始爬才会产生花费
        // 4. 遍历的方向:从前向后遍历
        if (cost.length==2){
            return Math.min(cost[0], cost[1]);
        }

        int[] dp = new int[cost.length+1];
        dp[0]=0;
        dp[1]=0;
        for (int i = 2; i < dp.length ; i++) {
            dp[i]=Math.min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2]);
        }
        return dp[dp.length-1];
    }
}
相关推荐
MATLAB代码顾问27 分钟前
【智能优化】无穷优化算法(INFO)原理与Python实现
开发语言·python·算法
炽烈小老头29 分钟前
【每天学习一点算法 2026/05/10】合并K个排序链表
学习·算法·链表
SilentSamsara38 分钟前
迭代器协议:`__iter__` / `__next__` 的完整执行流程
开发语言·人工智能·python·算法·机器学习
AI科技星38 分钟前
算法联盟ROOT · 全域数学物理卷第20、21、22分册:量子纠缠、隐形场论与时间膨胀
人工智能·算法·数学建模·数据挖掘·机器人
MATLAB代码顾问1 小时前
【智能优化】鹈鹕优化算法(POA)原理与Python实现
开发语言·python·算法
AI科技星1 小时前
微积分:变化与累积的数学(分层大白话解释版)
人工智能·算法·数学建模·数据挖掘·机器人
sinat_286945191 小时前
llm wiki
人工智能·算法·chatgpt
workflower2 小时前
企业酝酿数智化内驱力
大数据·人工智能·设计模式·机器人·动态规划
博界IT精灵2 小时前
图的遍历(哈喜老师)
数据结构·考研·算法·深度优先
sheeta19982 小时前
LeetCode 每日一题笔记 日期:2026.05.10 题目:2770. 达到末尾下标所需的最大跳跃次数
笔记·算法·leetcode